在 Ruby 中,试图打印出 String 的各个元素给我带来了麻烦。我没有看到每个字符,而是看到了它们的 ASCII 值:
>> a = "0123"
=> "0123"
>> a[0]
=> 48
我在网上查看过,但找不到任何方法可以让原来的“0”恢复原状。我对 Ruby 有点陌生,我知道它必须很简单,但我似乎找不到它。
或者您可以将整数转换为其字符值:
a[0].chr
你想要 a[0,1] 而不是 a[0]。
我相信这在 Ruby 1.9 中正在发生变化,使得“asdf”[2] 产生“d”而不是字符代码
总结一下:
这种行为将在版本 1.9 中消失,其中返回字符本身,但在以前的版本中,尝试通过字符位置引用字符串的单个字符将返回其字符值(因此 "ABC"[2] 返回67)
有许多方法可以从字符串中返回一系列字符(请参阅字符串切片方法的 Ruby 文档)以下所有方法都返回“C”:
"ABC"[2,1]
"ABC"[2..2]
"ABC".slice(2,1)
我发现范围选择器是最容易阅读的。谁能谈谈它是否效率较低?
[,] 运算符返回一个字符串给您,它是一个子字符串运算符,其中 [] 运算符返回 ruby 在打印时将其视为数字的字符。
我认为each_char
或chars
更好地描述了您想要的东西。
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