回答:
あなたのgsubでは"\n"
ないを使用する必要があり'\n'
ます。引用符の動作はそれぞれ異なります。
二重引用符は"
、文字の拡張と式の補間を許可します。エスケープされた制御文字を使用して\n
、その真の値(この場合は改行)を表し、#{expression}
変数を使用してテキストに好きなルビ式を組み込めるようにします。
一方、一重引用符'
は文字列を文字どおりに扱うため、展開、置換、補間などはありません。
この特定のケースでは、.delete
または.tr
メソッドのいずれかを使用して、改行を削除することをお勧めします。
tr
は、このタスクにはより良い選択だと思いますが、私が言ったように、私が答えたとき、一重引用符と二重引用符の違いを指摘するほうが良いと思いました。
文字列を置き換えるのではなく削除する場合は、次のように使用できますString#delete
(または同等のミューテーターString#delete!
)。
x = "foo\nfoo"
x.delete!("\n")
x
現在は「foofoo」に等しい
この特定のケースでString#delete
はgsub
、実際に文字列を何かに置き換えていないので、より読みやすくなっています。
delete
ここに示すように破壊的ではありません。新しい文字列を返します。
文字列の先頭と末尾の空白をすべて削除したい場合、または気にしない場合は、このstrip
メソッドを使用できます。
" hello ".strip #=> "hello"
"\tgoodbye\r\n".strip #=> "goodbye"
編集この質問の元のタイトルは異なりました。私の答えは元の質問に対するものです。
strip
先頭と末尾の空白のみを削除します:ruby-doc.org/core-1.9.3/String.html#method-i-strip-21
これには正規表現は必要ありません。trを使用:
"some text\nandsomemore".tr("\n","")
replace
変数の割り当てのように、文字列を新しい文字列に変更するだけです。一方tr
、文字ごとのグローバルな検索と置換です。
Rubyの使用chomp
またはstrip
関数:
"abcd\n".chomp => "abcd"
"abcd\n".strip => "abcd"
strip
先頭と末尾の空白のみを削除-ruby-doc.org/core-1.9.3/String.html#method-i-strip-21