Antworten:
Sie müssen "\n"
nicht '\n'
in Ihrem gsub verwenden. Die verschiedenen Anführungszeichen verhalten sich unterschiedlich.
Doppelte Anführungszeichen "
ermöglichen die Zeichenerweiterung und Ausdrucksinterpolation, d. H. Mit ihnen können Sie maskierte Steuerzeichen verwenden , um \n
ihren wahren Wert darzustellen, in diesem Fall Newline , und die Verwendung von verwenden, #{expression}
damit Sie Variablen und so ziemlich jeden beliebigen Rubinausdruck in den Text einbinden können.
Auf der anderen Seite '
behandeln einfache Anführungszeichen die Zeichenfolge wörtlich, sodass es keine Erweiterung, Ersetzung, Interpolation oder was Sie haben.
In diesem speziellen Fall ist es besser, die Zeilenumbrüche entweder mit der Methode .delete
oder mit der .tr
Methode String zu löschen .
tr
eine bessere Wahl für diese Aufgabe ist, aber wie gesagt, ich fand es besser, auf den Unterschied in einfachen, doppelten Anführungszeichen hinzuweisen, wenn ich antwortete.
Wenn Sie eine Zeichenfolge entfernen möchten, anstatt sie zu ersetzen, können Sie Folgendes verwenden String#delete
(oder das entsprechende Mutator-Äquivalent String#delete!
), z.
x = "foo\nfoo"
x.delete!("\n")
x
jetzt gleich "foofoo"
In diesem speziellen Fall String#delete
ist es besser lesbar als gsub
da Sie die Zeichenfolge nicht durch irgendetwas ersetzen.
delete
ist es nicht destruktiv, wie hier angegeben. Es wird eine neue Zeichenfolge zurückgegeben.
Wenn Sie möchten oder nicht möchten, dass alle führenden und nachfolgenden Leerzeichen aus Ihrer Zeichenfolge entfernt werden, können Sie die strip
Methode verwenden.
" hello ".strip #=> "hello"
"\tgoodbye\r\n".strip #=> "goodbye"
wie hier erwähnt .
bearbeiten Der ursprüngliche Titel für diese Frage war anders. Meine Antwort ist für die ursprüngliche Frage.
Sie brauchen dafür keinen regulären Ausdruck. Verwenden Sie tr:
"some text\nandsomemore".tr("\n","")
replace
Ändert einfach die Zeichenfolge in eine neue, z. B. die Variablenzuweisung. wohingegen tr
es sich um ein zeichenweises globales Suchen und Ersetzen handelt.
Verwendung chomp
oder strip
Funktionen von Ruby:
"abcd\n".chomp => "abcd"
"abcd\n".strip => "abcd"
strip
entfernt nur führende und nachfolgende