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

标签 ruby string

我正在尝试使用 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/

相关文章:

ruby 注册表检查

ruby - 如何卸载 dart sass?

c# - .NET 字符串.替换

C++相同的字符串无法通过比较检查

c++从字符串中解析int

javascript - 查找至少两个字符串中的唯一值

objective-c - 可选字符串与空字符串

ruby - 如何在 Sequel 的 where 语句中使用 json 字段?

ruby-on-rails - 按日期对 2 个 Activerecord 进行排序 - 当 RAILS 中的日期字段名称不同时

ruby-on-rails - 具有设计嵌套属性的未知属性 'user_id'