2010-12-27 2 views
7

私はいくつかの行を含む.txtテキストファイルを持っています。 私はRequestBuilderオブジェクトを使用して包含をロードし、 words = String.split \ n ");しかし、私は、例えば ...結果は「\ n」は一部が含まれている理由、疑問に思う、私のテキスト:奇妙なString.split( " n")の動作

abc 
def 
ghi 

結果は、

words[0] = "abc\n" 
words[1] = "def\n" 
words[2] = "ghi\n" 

すべてのヘルプは高く評価されています。前もって感謝します。

+2

あなたの行は '\ n'で終わっていますか? '\ r \ n 'で終わるかもしれません。 – Asaph

+0

これは可能ですが、どうすれば確認できますか?だから私はテキストエディタでEnterキーを押したときに何が作成されますか? – amateurs

+0

あなたはいつでも.trim()結果を得ることができ、そこにあるものは削除されます。 –

答えて

8

、Windowsのキャリッジリターン("\r\n")検索結果に表示さの違いを作るべきではない、もがすべき使用している場合あなたはString.split()に渡す正規表現をエスケープする必要があります。あなたは場合http://ideone.com/4PnZi

は、Windowsのキャリッジはいえ返し、使用しますべき(厳密には必要ではないが)str.split("\r\n")ています:

はここで両方の証拠だstr.split("\n")使用して、上記http://ideone.com/XcF3C

+0

素晴らしい!あなたの答えはすべてを明確にしますが、テキストエディタでは、どのようにテキストを\ nで終わらせることができますか? \ r \ nはウィンドウ内にあるだけですか? – amateurs

+0

@amateurs多くのWindowsアプリケーションは '\ r \ n'を使って行を終了し、Linuxや他のアプリケーションは' \ n'を使います。 Javaでキャリッジリターン( '\ r')を取り除きたい場合は、' str.replaceAll( "\ r \ n"、 "\ n") 'を使います。最初にキャリッジリターンを使用しないWindowsアプリケーションを見つけると、他の人に尋ねる必要があります。 – marcog

+0

大丈夫です!わかった。おかげでマルコフ! :D – amateurs

15

string.split("\\n+")をお試しください。あるいはさらに良い - split("[\\r\\n]+")

+0

+1これは正しい方法です。 – Nishant

+6

でも空行をスキップしませんか? (おそらく欲しい) –

+0

これは必要ではない、私の答えを参照してください。 – marcog

2

分割は、あなたが「\\ n個」の代わりに使用する必要があります正規表現「\ nが」

+2

分割はRegExを使用します。 – Powerlord

+0

cool。ありがとう。私は医者からの二重チェックなしで記憶に頼りたくはありませんでした。だから、これをOPに任せて見てください。 :) – Nishant

+0

'String.split()'は正規表現を取りますが、これは必須ではありません。 – marcog

0

次の操作も実行できます。考えてくださいString[] lines = text.split("\\\\n");