在Ruby中,试图打印出String的单个元素给我带来了麻烦。相反,看到每个人物的,我看到他们的ASCII值改为:Ruby - 将Integer转换为字符串
>> a = "0123"
=> "0123"
>> a[0]
=> 48
我看了网上却找不到任何办法让原来的“0”背出来的。我对Ruby有点新,我知道它必须是简单的东西,但我似乎无法找到它。
在Ruby中,试图打印出String的单个元素给我带来了麻烦。相反,看到每个人物的,我看到他们的ASCII值改为:Ruby - 将Integer转换为字符串
>> 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 method上的Ruby文档)以下所有返回“C” :
"ABC"[2,1]
"ABC"[2..2]
"ABC".slice(2,1)
我发现范围选择器是最容易阅读的。任何人都可以谈论它是否效率较低?
我认为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