rubyで書かれたスクリプトがあります。私が使用して(例えば)Rubyを使って1行の複数の改行を1つの改行に置き換える方法
\n
\n
\n
私の現在の試みが働いていた(というかない)
\n
に重複改行を削除する必要が出力に私に何の変化も与えなかった
str.gsub!(/\n\n/, "\n")
。私は間違って何をしていますか?
rubyで書かれたスクリプトがあります。私が使用して(例えば)Rubyを使って1行の複数の改行を1つの改行に置き換える方法
\n
\n
\n
私の現在の試みが働いていた(というかない)
\n
に重複改行を削除する必要が出力に私に何の変化も与えなかった
str.gsub!(/\n\n/, "\n")
。私は間違って何をしていますか?
は、これが私の作品:
#!/usr/bin/ruby
$s = "foo\n\n\nbar\nbaz\n\n\nquux";
puts $s
$s.gsub!(/[\n]+/, "\n");
puts $s
あなたは上記の質問に欲しいと思われるものを\ n \ n \ n "、\ n"はしないでください。
また、新しい行「\ r \ n」を実行していないことは確かですか?
EDIT:追加情報
がコメントパー
"改行の量は変更することができます別のラインは、2〜5改行を持っています。"
あなたは、単に分割とラインが望ましい結果に
>> "one\ntwo\n\nthree\n".split.join("\n")
=> "one\ntwo\nthree"
編集を与える再結合この
/\n{2,5}/, "\n"
。異なる行には2〜5行の改行があります。 – Macha
「\ r \ n」の吹き出しに感謝します。それは価値があるのですが、Windowsだけではありません - LinuxボックスのRailsサイトにあるテキストエリア入力のデータを使用すると、この問題に遭遇しました。確かに、他の要素もデータに影響を与える可能性がありますが、その点はWindowsはその一つではないということです。 – DreadPirateShawn
\ r \ nは完全に機能しました。完璧な解決策を見つけるために1.5時間を費やしました。ここにあります。ありがとう@ケン – sapatelbaps
を試してみてください2-5ラインをヒットする場合:私は、このことに気づいすべての空白部分文字列を改行で置き換えます。
>> "one two three\n".split.join("\n")
=> "one\ntwo\nthree"
最初にこれが欲しいものであることを確認してください。
Rubyはバックスラッシュは、あなたが提供しているとは異なるエスケープ必要があります。
str.sub!("\\\\n+\\\\n","\\\\n")
単に呼び出すスプリットはまたあなたの空白のすべてをトリムします。
は、あなたは無限の量に複数の改行を一致させる必要がある
>> "one ok \ntwo\n\nthree\n".split(/\n+/).join("\n")
=> "one ok \ntwo\nthree"
分割する\n
を渡す必要があります。例えば
str.gsub!(/\n+/, "\n")
::あなたのコード例では、ちょうどマイナーな微調整していきます
str = "this\n\n\nis\n\n\n\n\na\ntest"
str.gsub!(/\n+/, "\n") # => "this\nis\na\ntest"
さらに、また、空白行に
str.gsub!/\ nは^ \ sの*の\ N /、 "\ nは\ n" は
、
これはこのスレッドで最も正確な答えです。 –
これらのどれも '\ r'文字には対応しません。 'str.gsub(/ [\ n \ r] +^\ s * [\ r \ n] + /" \ n \ n ")' – Dex
gsub
の代わりにもっと慣用のString#squeeze
を使用してください。
str = "a\n\n\nb\n\n\n\n\n\nc"
str.squeeze("\n") # => "a\nb\nc"
それは私のために働いたこれを試してみてください。改行の量は変更することができ
s = test\n\n\nbar\n\n\nfooo
s.gsub("\n\n", '')
なぜかっこはどうですか? –
それは1年前だったので、私は分かりません。私はPerlで使っているものだから、\ n + /試してみることを期待しています。それはおそらく私が何か間違ったことをしたためです。 –
私はs.gsub(/ \ n + /、 "\ n")が動作すると思います。少なくともそれは私のラップトップで動作します。 – swcai