2010-11-06 14 views
33

Estoy buscando para convertir el carácter 'a' en 97 en Ruby 1.9.2¿Valor entero de un personaje en rubí?

de Ruby 1.8.7

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

de Ruby 1.9.2

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

Este enlace le ayudará con otros cambios en 1.9 también: '? C' http://eigenclass.org/hiki/Changes+in+Ruby+1.9#l16 – Zabba

Respuesta

47

Probablemente desee String#ord:

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

No se pudo hacer que esto funcione en v1.8 –

-2

?a devolverá el ASCII valor del char a

+0

Lamentablemente, no funcionará misma como pre-Ruby 1.9. Consulte http://eigenclass.org/hiki/Changes+in+Ruby+1.9#l16 – Zabba

+5

'? A' devolverá lo más parecido a un tipo' char' que tiene Ruby, que en Ruby 1.9 es un 'Cadena de un solo caracter 'y en Ruby pre-1.9 es un' Fixnum'. 'String # ord' (y su dual' Integer # chr') es lo que quiere usar. –

3

Tenga en cuenta que si desea escribir código que es compatible con tanto de Ruby 1.8 y Ruby 1.9, es posible que desee utilizar String#each_byte así:

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

Estoy atascado con 1.8 y esto funcionó muy bien. –

22

Para aquellos, que están buscando la al contrario de ord. Tenemos chr

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