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 \nihren 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 .deleteoder mit der .trMethode String zu löschen .
treine 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#deleteist es besser lesbar als gsubda Sie die Zeichenfolge nicht durch irgendetwas ersetzen.
deleteist 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 stripMethode 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 tres sich um ein zeichenweises globales Suchen und Ersetzen handelt.
Verwendung chompoder stripFunktionen von Ruby:
"abcd\n".chomp => "abcd"
"abcd\n".strip => "abcd"
stripentfernt nur führende und nachfolgende