0

以下に示すように、いくつかのテキストを含むテキストファイルを解析しています。

Level1
Some-text-here
Level2
Some-text-here
Level3
Some-text-here

ファイルを解析し、ファイル内の「レベル」の出現回数をカウントしようとするコードを実装しました。これは私がそれをしている方法です:

Scanner scanner = new Scanner(new File(inPath));
Pattern p = Pattern.compile("Level");
while(scanner.hasNext()) {
    if(scanner.hasNext(p))  {
        ++lastLevelCreatedWas;
    }
    scanner.next();
}

ただし、hasNext(p)が「Level」の完全一致を見つけようとし、「Level1」、「Level2」などの単語を無視するため、「if」条件がヒットすることはありません。キーワード「レベル」を含む単語をどのように考慮させるのですか?

4

2 に答える 2

3

私はあなたがScanner.useDelimiterを探していると思います

これを試して :

Scanner scanner = new Scanner(new File(inPath));
scanner.useDelimiter("Level");
while(scanner.hasNext()) {
    ++lastLevelCreatedWas;
    scanner.next();
}

必要に応じて、次の「レベル」トークンに移動します。

于 2012-07-06T18:37:18.530 に答える
2

hasNext、getNext、およびその他の同様のメソッドは、区切り文字が設定されている場合にのみ機能します。

メソッドを呼び出しuseDelimiterて、区切り文字をScannerインスタンスに設定します。

于 2012-07-06T18:38:33.710 に答える