2010-11-06 58 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"