Rubin: Zeichen aus einer Zeichenkette in ASCII
Frage
Diese Wiki-Seite gab eine allgemeine Vorstellung davon, wie ein einzelnes Zeichen konvertieren in ASCII http: // en.wikibooks.org/wiki/Ruby_Programming/ASCII
Aber sagen, wenn ich einen String habe und ich wollte jeden Charakter in ascii davon bekommen, was muß ich tun?
"string".each_byte do |c|
$char = c.chr
$ascii = ?char
puts $ascii
end
Es funktioniert nicht, weil es mit der Linie $ ascii nicht glücklich ist = char
syntax error, unexpected '?'
$ascii = ?char
^
Lösung
Die c
Variable enthält bereits den char-Code!
"string".each_byte do |c|
puts c
end
Ausbeuten
115
116
114
105
110
103
Andere Tipps
puts "string".split('').map(&:ord).to_s
Sie bitte auf dieses Thema beziehen sich auf die Veränderungen in ruby1.9 Erste ein ASCII-Zeichencode in Ruby mit `?` (Fragezeichen) nicht
Ruby-String liefert die codepoints
Verfahren nach 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]
verwenden „x“ .ord für ein einzelnes Zeichen oder „xyz“ .sum für eine ganze Reihe.
Sie können auch einfach anrufen to_a nach each_byte oder noch besser String # 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]
"a"[0]
oder
?a
Beide würden ihre ASCII-Äquivalent zurück.