Ich bin neu in Ruby und versuche derzeit, jedes Zeichen separat von einem Basis-String in Ruby zu bearbeiten. Ich benutze Ruby 1.8.6 und möchte etwas tun wie:
"ABCDEFG".each_char do |i|
puts i
end
Dies erzeugt einen undefinierten Methodenfehler "each_char".
Ich hatte erwartet, eine vertikale Ausgabe von zu sehen:
A
B
C
D
..etc
Ist die each_char
Methode nur für 1.9 definiert? Ich habe versucht, die einfache each
Methode zu verwenden, aber der Block gibt einfach die gesamte Zeichenfolge in einer Zeile aus. Der einzige Weg, wie ich das mache, was ziemlich unpraktisch ist, besteht darin, von Anfang an eine Reihe von Zeichen zu erstellen:
['A','B','C','D','...'].each do|i|
puts i
end
Dies gibt das gewünschte aus:
A
B
C
..etc
Gibt es vielleicht eine Möglichkeit, diese Ausgabe zunächst mit einer unveränderten Zeichenfolge zu erreichen?
Ich denke, das Java-Äquivalent ist:
for (int i = 0; i < aString.length(); i++){
char currentChar = aString.charAt(i);
System.out.println(currentChar);
}
Antworten:
Ich habe das gleiche Problem. Normalerweise greife ich auf Folgendes zurück
String#split
:Ich denke, Sie könnten es auch selbst so implementieren:
Bearbeiten: Eine weitere Alternative ist
String#each_byte
in Ruby 1.8.6 verfügbar, die den ASCII-Wert jedes Zeichens in einer ASCII-Zeichenfolge zurückgibt:quelle
Erweiterung des Kommentars von la_f0ka, insb. Wenn Sie auch die Indexposition in Ihrem Code benötigen, sollten Sie dies tun können
Dies
.chr
ist wichtig, da Ruby <1.9 den Code des Zeichens an dieser Position anstelle einer Teilzeichenfolge eines Zeichens an dieser Position zurückgibt .quelle
0..s.length - 1
=0...s.length
In 1.8.6 gibt es wirklich ein Problem. und es ist ok nach dieser Ausgabe
In 1.8.6 können Sie Folgendes hinzufügen:
quelle
Aber jetzt können Sie noch viel mehr tun:
quelle
ebenfalls
Ruby-Version> 2.5.1
quelle