2016-05-04 7 views
1

Ich habe eine Liste von Unicode-Zeichencodes, die ich mit rumoji ausgeben möchte. Hier ist der Code, den ich verwende, um über meine Daten zu iterieren.Drucken Unicode-Escape-Codes aus Variable

require "rumoji" 

# this works 
puts Rumoji.decode("\u{1F600}") 

# feed some data 
data = [ 
    "1F600", 
    "1F476", 
    "1F474" 
] 

data.each do |line| 
    # this doesn't work 
    puts Rumoji.decode("\u{#{line}}") 
    puts Rumoji.decode("\u{" + line + "}") 
end 

Ich bin mir nicht sicher, wie ich Variablennamen innerhalb der Escapezeichenfolge verwenden kann.

Antwort

3

\u kann nicht zusammen mit String-Interpolation verwendet werden, da \u Vorrang hat. Was könnte man tun, ist zu Array#pack ein Array von ganzen Zahlen:

▶ data.map { |e| e.to_i(16) }.pack 'U*' 
#⇒ "" 
+0

Ich habe versucht, herauszufinden, wie die Ausgabe jede Zeile zu verwenden, nicht die volle Palette. Ich wäre eher in der Lage, Strings für meine Ausgabe zu erstellen. Das funktioniert nicht 'puts e.to_i (16) .pack (" U * ")'. Irgendwelche Hinweise? – idleberg

+0

Da 'pack' auf' Array' definiert ist: '[" 1F600 ".to_i (16)]. Pack 'U''. – mudasobwa

+0

Vielen Dank! – idleberg