为什么Str [fix_num]会产生错误的结果

时间:2012-02-12 14:05:06

标签: ruby string

我正在尝试使用Str [fixnum]来返回字符串的特定部分。

# Given
Str = "James"

Str[0]
# Should yield `"J"'.
# Instead its yielding `74`.

奇怪的是昨天晚上它产生了“J”

有没有人知道这里会发生什么。我是否无意中更改了导致函数返回ascii字符编号的设置。我很难过。

更新:我已经确认74实际上是“J”的ascii数字表示。所以问题是函数返回ascii而不是实际的字符。

1 个答案:

答案 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中具有相同的行为。

相关问题