我正在尝试使用 Str[fixnum] 返回字符串的特定部分。
# Given
Str = "James"
Str[0]
# Should yield `"J"'.
# Instead its yielding `74`.
奇怪的是昨天晚上它产生了“J”
有没有人知道这里会发生什么。我是否无意中更改了导致函数返回 ascii 字符编号的设置。我很难过。
更新:我已经确认 74 实际上是“J”的 ascii 数字表示。所以问题是函数返回 ascii 而不是实际字符。
最佳答案
String#[]
以单个整数 i
作为参数,在 ruby 1.8 中返回第 i
个字节作为整数。在 ruby 1.9 中,它返回一个单字符字符串。
所以当您昨天尝试时,您可能使用的是 ruby 1.9,而今天您使用的是 1.8。
要在 ruby 1.8 中获取单字符字符串,可以使用 str[i, 1]
,它在 1.8 和 1.9 中具有相同的行为。
关于ruby - 为什么 Str[fix_num] 产生错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9249387/