0

次の形式のテキスト ファイル内の単語数を数えようとしています。

TITEL####URL####ABSTRACT\n
TITEL####URL####ABSTRACT\n
TITEL####URL####ABSTRACT\n

このような:

 Available line####http://en.wikipedia.org/wiki/Available_line####In voice,
 Marwan al-Shehhi####http://en.wikipedia.org/wiki/Marwan_al-Shehhi####Marwan etc.
 Theodore Beza####http://en.wikipedia.org/wiki/Theodore_Beza####Theodore Beza etc.

単語を数える私のコードは次のようになります。

    public static int countTotalWords() {
    totalWords = 0;

    try {
        FileInputStream fis;
        fis = new FileInputStream(fileName);


        Scanner scan = new Scanner(fis);

        while (scan.hasNext()) {
            totalWords++;
            scan.next();
        }
    } catch (FileNotFoundException ex) {
        Logger.getLogger(Opgave1.class.getName()).log(Level.SEVERE, null, ex);
    }
    return totalWords;
}

私はそれが機能すると仮定しています...

アブストラクトの単語だけを数えたいので、タイトルと URL は無視します。#### を使用して各行の最初のセクションをスキップできると思いますが、私の人生ではその方法がわかりません。どんな助けでも大歓迎です!

4

3 に答える 3

1

文字列を分割できます:

String s = "TITEL####URL####ABSTRACT\n";
String[] tokens = s.split("#+");
String abstractText = tokens[2];

次に、さらに分割できる単語を数えます。

int count = abstractText.split("\\s+").length;

注: Java 7 以降を使用していて、ファイルが大きすぎない場合は、次の方法でも読み取ることができます。

List<String> lines = Files.readAllLines(file, charset);
于 2013-05-30T23:12:14.067 に答える
0

lastIndexOfを使用して、最後の####.

したがって、最初の 2 つのパラメーターをスキップできる行が与えられます。

コードを試しましたか?私はよく知りませんScanner(行ごとの消費が可能であると仮定します)が、行を数えているだけのようです。

于 2013-05-30T23:12:33.080 に答える