HOWTO · Java

Java で文字列内の文字を数える

この記事では、Java で文字列内の文字をカウントする手順を示します

今日は、特定の Java 文字列の文字を数える複数の方法を紹介します。合計文字数と特定の文字数をカウントします。

String.length() を使用して、Java 文字列の合計文字数をカウントする

Java 文字列の文字数の合計を取得する最も一般的な方法は、length() メソッドを使用することです。以下のコードでは、文字列 exampleString があり、この文字列の長さの合計を取得するために exampleString.length() を使用します。

出力を見ると、exampleString には 23 文字しかないのに 28 文字もあることがわかります。これは String.length() が空白もカウントしているためです。この問題に対処するには、replace() 関数を使用して、すべての空白文字をカウントしない空文字に置き換えることができます。最後に、空白を含まない文字列の長さを求めると 23 になります。

public class CountCharsInString {
  public static void main(String[] args) {
    String exampleString = "This is just a sample string";

    int stringLength = exampleString.length();

    System.out.println("String length: " + stringLength);

    int stringLengthWithoutSpaces = exampleString.replace(" ", "").length();
    System.out.println("String length without counting whitespaces: " + stringLengthWithoutSpaces);
  }
}

出力:

String length: 28
String length without counting whitespaces: 23

Java 8 ストリームを使用して Java 文字列内の文字をカウントする

文字列内のすべての文字を数えるもう一つの方法は、String.chars().count() メソッドを用いて文字列内の文字の総数を返すことです。chars() はストリームなので、filter() メソッドを用いて空白を無視することができます。filter(ch -> ch != ' ') はすべての文字をチェックし、空白を見つけた場合はフィルタリングして除外します。

public class CountCharsInString {
  public static void main(String[] args) {
    String exampleString = "This is just a sample string";

    long totalCharacters = exampleString.chars().filter(ch -> ch != ' ').count();

    System.out.println("There are total " + totalCharacters + " characters in exampleString");
  }
}

出力:

There are total 23 characters in exampleString

ループと charAt() を使って Java 文字列の特定の文字をカウントする

これまで文字列の総文字数をカウントしてきましたが、以下の例では文字列の中の特定の文字をカウントする方法を示しています。目的は exampleString の中の i の数を取得することです。これを実現するために、文字列の最後まで実行するループを使用しました。

カウントを保持する totalCharacters と、exampleString.charAt(i) を使って個々の文字を保持する temp の 2つの変数を追加します。文字の出現をチェックするために、temp と文字を比較して、一致するかどうかをチェックします。一致した場合は totalCharacters が 1つインクリメントされます。ループが終わると、文字列の中で文字が何回出現したかを確認することができます。

public class CountCharsInString {
  public static void main(String[] args) {
    String exampleString = "This is just a sample string";

    int totalCharacters = 0;
    char temp;
    for (int i = 0; i < exampleString.length(); i++) {
      temp = exampleString.charAt(i);
      if (temp == 'i')
        totalCharacters++;
    }

    System.out.println("i appears " + totalCharacters + " times in exampleString");
  }
}

出力:

i appears 3 times in exampleString