1

という文字列がありrawます。次のように配列に分割しようとしています。

lines = raw.split("\\r?\\n|\\r");

これは最初の数回の発生ではうまく機能しますが、その後壊れて残りの文字列が完全に失われます。例生はしThis is my string\n\nThis is a new paragraph\nThis is another lineとなり{"This is my string", "", "This is a new paragraph"}ます。これは Java のバグですか、それとも何か間違っていますか? どうすれば修正できますか?

編集:空白行を保持したい。 [\\n\\r]+空行を保持しない

4

4 に答える 4

3

私は正規表現を使用します:

raw.split("[\\r\\n]+");
于 2013-10-30T20:20:15.327 に答える
2

あなたのコードは期待通りに動作します:

class Test {
    public static void main(String[] args) {
        String raw = "This is my string\n\nThis is a new paragraph\nThis is another line";
        String[] lines = raw.split("\\r?\\n|\\r");
        for (String line : lines) {
            System.out.println(line);
        }
    }
}

これは以下を出力します:

This is my string

This is a new paragraph
This is another line

split()したがって、問題はそれ自体ではなく、結果の調査/表示方法にある可能性がありますsplit()

于 2013-10-30T20:22:22.190 に答える