Wie kann ich alle Zeilenumbrüche und Leerzeichen aus einer Zeichenfolge in Ruby entfernen?
Zum Beispiel, wenn wir eine Zeichenkette haben:
%Vor%Es sollte dies werden:
%Vor%Das heißt, alle Leerzeichen sollten entfernt werden.
Sie können etwas wie:
verwenden %Vor%Oder, wenn Sie die geänderte Zeichenfolge zurückgeben möchten, anstatt die Variable zu ändern,
%Vor% Damit können Sie es auch mit anderen Methoden verketten (d. h. something_else = var_name.gsub(...).to_i
, um das Leerzeichen zu entfernen und es dann in eine Ganzzahl umzuwandeln). gsub!
wird es an Ort und Stelle bearbeiten, also müßten Sie var_name.gsub!(...); something_else = var_name.to_i
schreiben. Genau genommen, solange mindestens eine Änderung vorgenommen wurde, wird gsub!
die neue Version zurückgeben (dh das gleiche, was gsub
zurückgeben würde), aber auf die Chance, dass Sie eine Zeichenkette ohne Leerzeichen erhalten werde nil
zurückgeben und die Dinge werden sich brechen. Aus diesem Grund würde ich gsub
bevorzugen, wenn Sie Methoden verketten.
gsub
funktioniert, indem alle Übereinstimmungen des ersten Arguments mit dem zweiten Argument des Inhalts ersetzt werden. In diesem Fall entspricht es einer Folge von aufeinanderfolgenden Leerzeichen (oder nur einer einzelnen) mit der Regex /\s+/
und ersetzt diese durch eine leere Zeichenfolge. Es gibt auch eine Blockform, wenn Sie eine Bearbeitung für den angepassten Teil durchführen möchten, anstatt nur direkt zu ersetzen; Weitere Informationen hierzu finden Sie unter String#gsub
.
Die Ruby-Dokumente für die Klasse Regexp
sind ein guter Ausgangspunkt, um mehr über reguläre Ausdrücke zu erfahren - - Ich habe festgestellt, dass sie in einer Vielzahl von Situationen nützlich sind, in denen ein paar Millisekunden hier und da nicht zählen und Sie keine Dinge anpassen müssen, die beliebig tief verschachtelt werden können.
Wie Gene in seinem Kommentar vorgeschlagen wurde, könntest du auch tr
:
Es funktioniert auf ähnliche Weise, aber anstatt eine Regex zu ersetzen, ersetzt es jede Instanz des n ten Zeichens des ersten Arguments in der Zeichenfolge, in der es aufgerufen wird, durch n th Zeichen des zweiten Parameters, oder wenn nicht, mit nichts. Weitere Informationen finden Sie unter String#tr
.
Sie können auch String # delete verwenden:
%Vor% Sie könnten String # delete! zum Ändern verwenden str
vorhanden, aber no delete!
gibt nil
zurück, wenn keine Änderung vorgenommen wurde
Alternativ könnten Sie scan
die Zeichenfolge für die Ziffern /\d+/
und join
das Ergebnis:
Bitte beachten Sie, dass dies auch alphabetische Zeichen, Bindestriche, Symbole, im Grunde alles, was keine Ziffer ist, entfernt.
Tags und Links ruby string whitespace