Ruby – 将整数转换为字符串

在Ruby中,尝试打印出String的各个元素给我带来了麻烦。 我没有看到每个字符,而是看到了他们的ASCII值:

>> a = "0123" => "0123" >> a[0] => 48 

我在网上看了但是找不到任何方法让原来的“0”退出它。 我对Ruby有点新鲜,我知道它必须是简单的东西,但我似乎无法找到它。

或者您可以将整数转换为其字符值:

 a[0].chr 

你想要一个[0,1]而不是一个[0]。

我相信这在Ruby 1.9中正在改变,因此“asdf”[2]产生“d”而不是字符代码

总结一下:

此行为将在版本1.9中消失,其中返回字符本身,但在以前的版本中,尝试通过字符位置引用字符串的单个字符将返回其字符值(因此“ABC”[2]返回67)

有许多方法可以从字符串返回一系列字符(请参阅String slice方法上的Ruby文档)以下所有返回“C”:

 "ABC"[2,1] "ABC"[2..2] "ABC".slice(2,1) 

我发现范围选择器是最容易阅读的。 任何人都可以谈论它是否效率较低?

@Chris ,

这就是为String类定义[]和[,]的方式。

查看String API 。

[,]运算符返回一个字符串给你,它是一个子字符串运算符,其中[]运算符返回ruby在打印时将其视为数字的字符。

我认为each_charchars更好地描述了你想要的东西。

 irb(main):001:0> a = "0123" => "0123" irb(main):002:0> Array(a.each_char) => ["0", "1", "2", "3"] irb(main):003:0> puts Array(a.each_char) 0 1 2 3 => nil