2010-11-06 6 views
33

Je cherche à transformer le caractère 'a' en 97 rubis 1.9.2Valeur entière d'un caractère dans ruby?

Ruby 1.8.7

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

Ruby 1.9.2

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

Ce lien permettra à d'autres changements de 1.9 aussi: « ? C » http://eigenclass.org/hiki/Changes+in+Ruby+1.9#l16 – Zabba

Répondre

47

Vous voulez probablement String#ord:

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

Impossible de faire fonctionner ceci sur v1.8 –

-2

?a renverra ASCII valeur du caractère a

+0

Malheureusement, ne fonctionnera pas même comme pré-Ruby 1.9. Voir http://eigenclass.org/hiki/Changes+in+Ruby+1.9#l16 – Zabba

+5

'? A' retournera la chose la plus proche d'un type' char' que Ruby a, qui dans Ruby 1.9 est un '' String '' 'et en Ruby pre-1.9 est un' Fixnum'. 'String # ord' (et son double' Integer # chr') est ce que vous voulez utiliser. –

3

Notez que si vous voulez écrire du code qui est compatible avec deux Ruby 1.8 et Ruby 1.9, vous pouvez utiliser String#each_byte comme ceci:

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

Je suis coincé avec 1.8 et cela a très bien fonctionné. –

22

Pour ceux qui recherchent la à l'opposé de ord. Nous avons chr

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