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
                ^
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top