我正在尝试使用Str [fixnum]来返回字符串的特定部分。
# Given
Str = "James"
Str[0]
# Should yield `"J"'.
# Instead its yielding `74`.
奇怪的是昨天晚上它产生了“J”
有没有人知道这里会发生什么。我是否无意中更改了导致函数返回ascii字符编号的设置。我很难过。
更新:我已经确认74实际上是“J”的ascii数字表示。所以问题是函数返回ascii而不是实际的字符。
答案 0 :(得分:4)
String#[]
的 i
作为参数在ruby 1.8中返回i
个字节作为整数。在ruby 1.9中,它返回一个单字符串。
因此,当你昨天尝试使用它时,你可能正在使用ruby 1.9,而你今天使用的是1.8。
要在ruby 1.8中获取单字符字符串,可以使用str[i, 1]
,它在1.8和1.9中具有相同的行为。