3

私は Ruby を使用しており、次のテキストを含むサンプル文字列を読み取る方法を探しています。

"This is a test
file, dog cat bark
meow woof woof"

要素を空白に基づいて文字の配列に分割しますが\n、配列内の値を別の要素として保持します。

string.split(/\n/)を使用して取得できることを知っています

["this is a test", "file, dog cat bark", "meow woof woof"]

string.split(/ /)収量も

["this", "is", "a", "test\nfile,", "dog", "cat", "bark\nmeow", "woof", "woof"]

しかし、私は取得する方法を探しています:

["this", "is", "a", "test", "\n", "file,", "dog", "cat", "bark", "\n", "meow", "woof", "woof"]

Rubyを使用してこれを達成する方法はありますか?

4

4 に答える 4

5

奇妙なことですが、次のことを行います。

string.split /(?=\n)|(?<=\n)| /
#=> ["This", "is", "a", "test", "\n", "file,", "dog", "cat", "bark", "\n", "meow", "woof", "woof"]
于 2013-04-12T01:13:06.703 に答える
5

必要なものの間の区切り文字を探す代わりに、ロジックを少し変えて、必要なものを探すことができます。このような単純scanなものでうまくいくはずです:

>> s.scan(/\S+|\n+/)
=> ["This", "is", "a", "test", "\n", "file,", "dog", "cat", "bark", "\n", "meow", "woof", "woof"]

もちろん、繰り返し\nは単一のトークンでなければならないことを前提としています。

于 2013-04-12T01:30:50.323 に答える
2

これは特にエレガントではありませんが、 ( を囲むスペースに注意してください) に置き換え"\n"てから、結果の文字列を で分割してみてください。" \n "\n/ /

于 2013-04-12T00:58:12.320 に答える