如何检索数组中字母的字符串值?

时间:2013-09-28 19:17:22

标签: ruby ascii

我正在尝试检索数组中字母的值。我的阵列是:

a = ["a","b","c","d","e","f","g","h"].

如果我想检索字母的值,则代码为:

?a

但是,当我尝试?a[5]时,它会给我0。有谁知道为什么会这样?

- 很抱歉澄清我使用的是1.8.7:)

3 个答案:

答案 0 :(得分:3)

实际上,从Ruby 1.9开始。 ?a将为您提供字符串“a”,用于为您提供该字符的ASCII代码。这只是另一个(有限的)字符串文字机制。

如果您想要字符值,则需要使用ord方法,如a[5].ord?a.ordhttp://ruby-doc.org/core-2.0.0/String.html#method-i-ord

记录了ord

传递单个Fixnum时,?运算符和String []方法的行为在Ruby 1.9中同时更改,两者都返回一个单字符字符串,用于返回Fixnum对象。

顺便说一句,我在同一官方参考文献的Literals / String部分找不到?运算符的文档。

答案 1 :(得分:1)

这是因为关联性/优先级。 ?a[5]被解释为(?a)[5],而不是?(a[5])。我想你会期待后者,但它实际上是前者。

答案 2 :(得分:0)

在Ruby 1.8 ?a == 'a'[0]中。有关? operator的信息(搜索:“整数和浮点数”)

因此,您可以使用以下符号获取数组a中字母的值:

a[5][0]

而在Ruby> 1.9使用方法orda[5].ord