0

次のようにフォーマットされたレコードがあります:

レコード1行
レコード1行
レコード1行

レコード2行
レコード2行
レコード2行

..。

Javaスキャナーを使用して各レコードの行を引き出したいのですが。しかし、私のパターンは正しく機能していないようです。

new Scanner(reader).useDelimiter(Pattern.compile("^\\s*$"));

私はscanner.next()ではなく入力を取り戻し、各レコードの行を取得します。

4

4 に答える 4

3

私が思いついた解決策はこれでした:
new Scanner(reader).useDelimiter(Pattern.compile("^\\s*$", Pattern.MULTILINE));

これにより、レコード行がグループとして返 ​​さ れ ます
scanner.next()
:
record 1 line 1
record 1 line 2
record 1 line 3

scanner.next()

record 2 line 1
record 2 line 2
record 2 line 3

于 2012-04-19T14:36:57.373 に答える
0

これはちょっとした推測ですが、本当にここで正規表現を使用する必要があるのでしょうか? 区切り文字を改行文字として設定するだけでよいと思います。

于 2012-04-18T17:41:50.320 に答える
0

私はこのようにします。

StringBuilder sb = new StringBuilder();
ArrayList<String> records = new ArrayList<String>();
while(scanner.hasNextLine()){
    String line = scanner.nextLine();
    if("".equals(line.trim())){
        records.add(sb.toString());
        sb = new StringBuilder();
    }else{
        sb.append(line);
        sb.append("\n");
    }
}
System.out.println(records);

私はこれをテストしていないので、ばかげたエラーがあるかもしれません。

于 2012-04-18T18:02:48.003 に答える
0

複数の行が必要な場合は、試してみます

"\\n\\n+"
于 2012-04-18T17:41:00.800 に答える