2012-12-11 16 views
6

私はファイルを読み込んで、split(' ')を使ってテキストを配列に分割しています。問題は、これらのテキストファイルに改行文字が含まれていることです。その改行文字を保持したいと思います。私は次のコード空白で文字列を分割しますが、 n - Ruby

"Lorem ipsum\ndolor sit amet".split(' ') 

を実行した場合たとえば、私は、改行文字を削除分割しないのはなぜ

["Lorem", "ipsum", "dolor", "sit", "amet"] 

の出力を取得しますか?私の配列に\nを保持するにはどうすればいいですか?

+3

は、Perlのルーツを持つ、特別な可能性があります。この「魔法」*はドキュメンテーションでカバーする必要があります。最初にご相談ください。特別な性質は*文字列* '" "'であり、*正規表現* '/ + /'ではないことに注意してください。 –

+7

_パターンが単一のスペースである場合、strは空白で分割され、先頭の空白と連続した空白文字の実行は無視されます._ http://www.ruby-doc.org/core-1.9.3/String.html#method- i-split –

+0

@pst - ありがとう!それがそれを解決しました。 – fbonetti

答えて

12

あなたの質問に対するMichael Berkowskiのコメントは正しいです。

あなたはこのケースを回避したい場合は、正規表現を使用します。 `」「`(単一のスペースで文字列)を使用して

"Lorem ipsum\ndolor sit amet".split(/ /) 
#=> ["Lorem", "ipsum\ndolor", "sit", "amet"] 
+0

なぜ '/ /'で動作するのですが、 '/ \ s /'では動作しないのですか? – oldergod

+5

@oldergod '\ s'は' [\ t \ r \ n \ f] 'と同等です。 – halfelf

+0

@halfelf私は、ありがとう! – oldergod