Java で文字列の単語数を取得する

Rupam Yadav 2023年10月12日
  1. Java で StringTokenizer を使用して文字列内の単語をカウントする
  2. Java で split() と正規表現を使用して、文字列内の単語をカウントする
  3. Java で単語が文字列内で繰り返される回数を取得する
Java で文字列の単語数を取得する

この記事では、Java で文字列内の単語数を数える方法と、これを実現するためのさまざまな方法について説明します。

Java で StringTokenizer を使用して文字列内の単語をカウントする

Java の StringTokenizer クラスを使用すると、文字列を複数のトークンに分割できます。このクラスのメソッドは、引用符で囲まれた文字列、識別子、数値を区別したり、コメントを認識したりスキップしたりしません。トークンを区切る文字(区切り文字)は、作成時またはトークンごとに指定できます。

StringTokenizer クラスは空白とタブを自動的にカウントしないため、独自に処理されます。

import java.util.StringTokenizer;
public class WordCount {
  public static void main(String args[]) {
    String mydelim = " - ";
    String myString = "The  sky - - is blue!";
    StringTokenizer stringTokenizer1 = new StringTokenizer(myString);
    StringTokenizer stringTokenizer2 = new StringTokenizer(myString, mydelim);

    int tokensCount1 = stringTokenizer1.countTokens();
    int tokensCount2 = stringTokenizer2.countTokens();

    System.out.println("Word count without delimiter: " + String.valueOf(tokensCount1));
    System.out.println("Word count: " + String.valueOf(tokensCount2));
  }
}

出力:

Word count without delimiter: 6
Word count: 4

ここでは、コンストラクターで文字列を渡すことで stringTokenizer1 を作成しました。デフォルトの区切り文字を使用しますが、stringTokenizer2 の場合、トークンを区切るカスタム区切り文字が渡されます。最初のアプローチはハイフンをカウントしますが、2 番目のアプローチはカウントしません。

Java で split() と正規表現を使用して、文字列内の単語をカウントする

Java の split(String regex) メソッドは正規表現を取り、正規表現に一致する指定された文字列を分割して、文字列の配列を返します。

ここで使用する正規表現は\\s+ で、空白を文字列から分離します。つまり、指定された文字列を空白の周りに分割します。文字列内の単語の数は、文字列配列 words の長さに等しく、length を呼び出すことで取得できます。出力には、myStr の単語数が表示されます。

public class WordCount {
  public static void main(String args[]) {
    String myStr = "the butcher's wife, she was from Montreal";
    String[] words = myStr.split("\\s+");
    System.out.println("Word Count is: " + words.length);
  }
}

出力:

Word Count is: 7

Java で単語が文字列内で繰り返される回数を取得する

与えられた文字列で単語が繰り返される回数を計算できます。ここで、randomText は、blue という単語が繰り返される回数を求める必要がある文字列です。このために、タイプ int の変数 times を取得し、それを 0 に初期化します。0 から randomText の長さまで for ループを実行します。

startsWith() メソッドは、文字列が指定された文字列の文字で始まるかどうかを比較します。i = 0 の場合、randomText.substring(0) メソッドはインデックス 0 でサブストリングを取得し、それが startsWith("blue") であるかどうかをチェックし、一致する場合は times を 1 ずつインクリメントします。そうでなければ、それは増加しません。

同様に、残りの長さをチェックし、指定された文字列で単語が繰り返された回数を出力として出力します。

public class WordCount {
  public static void main(String args[]) {
    String randomText = "The sky is blue it meets the sea which is also blue";

    String text = "blue";
    int times = 0;
    for (int i = 0; i < randomText.length(); i++) {
      if (randomText.substring(i).startsWith(text)) {
        times++;
      }
    }
    System.out.println(randomText + " contains " + text + " " + times + " times");
  }
}

出力:

The sky is blue it meets the sea which is also blue contains blue 2 times
著者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

関連記事 - Java String