1

私は、定数文字列区切り文字で区切られたファイルからいくつかのデータを読み取る方法を見つけようとしてきました。

区切り文字にはメタ文字が含まれており、表示されている場所でのみ分割しようとしているため、正規表現は適していません。

誰かが私に方法をアドバイスできますか?私はこれを行うための独自のメソッドを実装する方法を知っています。私が求めているのは、これを行うためのJavaに組み込まれたものがあるかどうかです。

例:

John%#@!〜23s、243 doe%#@!〜23s、243は、ミルクを購入するために%#@!〜23s、243を市場に出しました。

結果として。

電話1:.next()->ジョン電話2:.next()-> doe電話3:.next()->電話4:.next()->市場に出て、ミルクを購入しました。

4

2 に答える 2

1

区切り文字にはメタ文字が含まれており、表示される場所のみを分割しようとしているため、正規表現は適していません。

デリミタに正規表現を引き続き使用できます。正規表現のPattern.quote「特殊」文字が干渉しないようにするために使用してください。

Scannerもちろん、それはあなたがまだ を使いたいと仮定しています。GuavaSplitter内でクラスを使用できます

于 2013-03-05T18:22:43.377 に答える
0

どこで問題が発生しているのかわかりません。これはうまくいくはずです:

コード:

    String input = "John %#@!~23s,243 doe %#@!~23s,243 went %#@!~23s,243 to market to buy some milk.";
    Scanner scanner = new Scanner(input).useDelimiter("\\s+" + Pattern.quote("%#@!~23s,243") + "\\s+");
    while (scanner.hasNext()) {
        System.out.println("Token: ." + scanner.next() + ".");
    }

出力:

Token: .John.
Token: .doe.
Token: .went.
Token: .to market to buy some milk..

そのPattern.quote()例の文字列 (メタ文字を含まない) には厳密には必要ありませんが、実際の入力によっては必要になる場合があります。

于 2013-03-05T18:34:29.213 に答える