2010-11-06 89 views
33

我期待把字符 'a' 到97红宝石1.9.2红宝石中字符的整数值?

的Ruby 1.8.7

irb(main):001:0> ?a 
=> 97 

的Ruby 1.9.2

irb(main):001:0> ?a 
=> "a" 
+2

此链接将有助于在1.9还包括其他变化:“C” http://eigenclass.org/hiki/Changes+in+Ruby+1.9#l16 – Zabba 2010-11-06 01:07:22

回答

47

您可能想要String#ord

% irb 
ruby-1.9.2-head > 'a'.ord 
=> 97 
+0

无法让这个在v1.8上工作 – 2014-04-28 01:15:55

-2

?a将返回ASCII字符的值a

+0

可悲的是,将无法正常工作一样作为Ruby 1.9之前的版本。请参阅http://eigenclass.org/hiki/Changes+in+Ruby+1.9#l16 – Zabba 2010-11-06 01:07:43

+5

''a''会将最接近的东西返回到Ruby所拥有的'char'类型,它在Ruby 1.9中是一个单字符'String '在Ruby 1.9之前是'Fixnum'。 'String#ord'(和它的双重'Integer#chr')就是你想要使用的。 – 2010-11-06 09:08:34

3

注意,如果你想编写代码,并与兼容两种的Ruby 1.8和Ruby 1.9,您可能需要使用String#each_byte这样的:

$ irb 
>> 'a'.each_byte.first 
=> 97 
+0

我与1.8卡住,这很好。 – 2014-04-28 01:15:28

22

对于那些谁正在寻找对面的ord。我们有chr

>> "A".ord 
=> 65 
>> 65.chr 
=> "A"