web-dev-qa-db-ja.com

Ruby文字列内から文字列「\ n」を削除するにはどうすればよいですか?

私はこの文字列を持っています:

"some text\nandsomemore"

「\ n」を削除する必要があります。私はもう試した

"some text\nandsomemore".gsub('\n','')

しかし、それは機能しません。どうすればいいのですか?読んでくれてありがとう。

107
ben

Gsubで"\n"ではなく'\n'を使用する必要があります。異なる引用符は異なる動作をします。

二重引用符"は、文字の展開と式の補間を許可します。 \nのようなエスケープされた制御文字を使用して真の値(この場合はnewlineを表し、#{expression}を使用すると、変数を織り込むことができます。また、テキストにRuby式を追加できます。

一方、一重引用符'は文字列を文字通り処理するため、展開、置換、補間、または何が必要かはありません。

この特定のケースでは、.deleteまたは.tr St​​ringメソッドを使用して、newlinesを削除することをお勧めします。

詳細はこちらをご覧ください

158
ocodo

文字列を置き換えるのではなく、削除する場合は、String#delete(またはそのミューテーターに相当するString#delete!)を使用できます。例:

x = "foo\nfoo"
x.delete!("\n")

xが「foofoo」に等しくなりました

この特定のケースでは、String#deletegsubよりも読みやすくなります。これは、実際に文字列を何かに置き換えていないためです。

55
Paul Leader

文字列の先頭と末尾の空白をすべて削除したい場合は、stripメソッドを使用できます。

"    hello    ".strip   #=> "hello"   
"\tgoodbye\r\n".strip   #=> "goodbye"

前述のとおり here

editこの質問の元のタイトルは異なっていました。私の答えは元の質問に対するものです。

48
ThomasW

これには正規表現は必要ありません。 trを使用します。

"some text\nandsomemore".tr("\n","")
29
Mark Thomas

rubyのchompまたはstrip関数を使用します。

"abcd\n".chomp => "abcd"
"abcd\n".strip => "abcd"
17
Mateo Vidal
2
icyrock.com