文字列の長さを取得する

広告

文字列の長さを取得するには String クラスで用意されている length メソッドを使用します。文字列に含まれる文字の文字コードの数を取得することができます(多くの文字は 1 文字 1 文字コードですが、文字によっては 2 つの文字コードを使用するものもあります)。ここでは Java で文字列の長さを取得する方法について解説します。

String.lengthメソッドの使い方

文字列に含まれる文字の長さを取得するには String クラスで用意されている length メソッドを使用します。書式は次のとおりです。

public int length()

戻り値:
このオブジェクトによって表される文字シーケンスの長さ。

戻り値として文字列の長さを int 型の値として取得します。

length メソッドは文字列の文字の個数ではなく、それぞれの文字に対する UTF-16 文字コードの個数を返します。多くの文字は 1 文字につき 1 つの文字コードで表されるため length メソッドは文字列の文字数と同じになることが多いですが、サロゲートペアを使用する文字は 2 つの文字コードを使用するため、文字数と length メソッドの戻り値が異なる場合があります。(このあとで解説します)。

次のサンプルを見てください。

String msg1 = "Hello";
String msg2 = "東京都港区赤坂";

System.out.println(msg1.length());  // 5
System.out.println(msg2.length());  // 7

それぞれの文字列の長さを取得することができました。

なお配列の要素数を取得するときには length フィールドの値を参照するため 変数.length のようにしていました。文字列の長さを取得する場合はフィールドの値ではなく length メソッドを使用するため 変数.length() のように取得します。間違えないように気を付けてください。

※ 文字列に含まれる文字の数( Unicode コードポイントの数)を取得する codePointCount メソッドについては「文字列の文字の数(コードポイントの数)を取得する(String.codePointCount)」を参照してください。

サンプルコード

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample6-1.java という名前で保存します。

class JSample6_1{
  public static void main(String[] args){
    String msg1 = "Hello";
    String msg2 = "東京都港区赤坂";

    System.out.println(msg1 + "の長さは " + msg1.length());
    System.out.println(msg2 + "の長さは " + msg2.length());
  }
}

コンパイルを行います。

javac -encoding UTF-8 JSample6_1.java

その後で、次のように実行してください。

java JSample6_1

String.lengthメソッドの使い方(1)

2 つの文字列の長さをそれぞれ取得しました。

サロゲートペアを使用する文字の場合

Java では内部的に文字を UTF-16 で保管しているため、サロゲートペアについて考慮する必要があります。サロゲートペアとは 1 つの文字を 2 つの文字コードで表す文字のことで、サロゲートペアで表される文字については length メソッドが 2 を返します。

次のサンプルを見てください。

String msg = "𪛊";

System.out.println(msg.length());  // 2

文字は 1 文字ですが、 length メソッドは 2 を返しました。

length メソッドの戻り値は、ほとんどのケースでは文字数と一致しますが、サロゲートペアを使用する文字が含まれている場合は文字数とはならないのでご注意ください。

サロゲートペアについては「JavaScriptにおけるサロゲートペアとは」で解説しています。

-- --

Java で文字列の長さを取得する方法について解説しました。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。