2008-09-27 19 views

Respuesta

44

La variable c ya contiene el código de caracter!

"string".each_byte do |c| 
    puts c 
end 

produce

115 
116 
114 
105 
110 
103 
3
"a"[0] 

o

?a 

Tanto devolvería su equivalente ASCII.

+4

Hizo este cambio en Ruby 1.9? – Gishu

+1

Sí, en Ruby 1.8 devuelve el valor ascii de los caracteres, pero ruby ​​el carácter en el índice en ruby ​​1.9 ... – David

+9

'" a "[0] .ord' debe devolver el código ascii. Tenga en cuenta que en realidad es un código Unicode. – albert

16
puts "string".split('').map(&:ord).to_s 
+9

incluso mejor que 'split ('')' está llamando 'chars' – phoet

6

uso "x" .ord para un solo carácter o .sum "xyz" una frase entera.

2

Ruby String proporciona el método codepoints después de 1.9.1.

str = 'hello world' 
str.codepoints.to_a 
=> [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100] 

str = "你好世界" 
str.codepoints.to_a 
=> [20320, 22909, 19990, 30028] 
1

También puedes, simplemente llamar to_a después each_byte o incluso mejor cadena # bytes

=> 'hello world'.each_byte.to_a 
=> [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100] 

=> 'hello world'.bytes 
=> [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100] 
Cuestiones relacionadas