Java 文字列の長さを取得するサンプル(length)

Javaのlengthメソッドで、文字列の長さを取得するサンプルです。

目次

文字列 文字列の長さを取得する(length)
  サロゲートペアの文字列の長さを取得する(codePointCount)

文字列の長さを取得する(length)

public int length()

lengthメソッドで文字列の長さを取得するサンプルです。

package test1;

public class Test1 {
	public static void main(String[] args) {
		
		// 文字列の長さを取得
		String str1 = "あいう+1";
		System.out.println(str1.length()); // 5

		// for文で文字の長さを取得
		String a = "abc";
		for (int i = 0; i < a.length(); i++) {
			System.out.println(a.charAt(i)); //a b c
			System.out.println(a.codePointAt(i));//97 98 99
		}
 	}
}

7行目は、全角文字と半角文字がありますが、それぞれ1文字としてカウントされています。
12行目は、文字列の長さを取得し、for文で文字数分ループさせています。
13行目のcharAtメソッドは、指定の位置にある文字を返します。
14行目のcodePointAtメソッドは、指定の位置にあるUnicodeコード・ポイントを返します。

サロゲートペアの文字列の長さを取得する(codePointCount)

public int codePointCount(int beginIndex, int endIndex)
  • サロゲートペアの文字列が含まれている場合はcodePointCountメソッドを使用して文字の長さを取得します。
  • サロゲートペアとはUnicodeの2バイト(6万5536種類の文字)で表現しきれない特殊な文字に対して4バイト割り当てていることです。
  • 1つめの引数に先頭のインデックス、2つめの引数に最後のインデックスをセットします
  • 戻り値としてUnicodeコード・ポイントの数を返します
  • Stringクラスのメソッドです。
  • 以下はJava8 API仕様のcodePointCountメソッドのリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#codePointCount-int-int-

codePointCountメソッドでサロゲートペアの文字列の長さを取得するサンプルです。

package test1;

public class Test1 {
	public static void main(String[] args) {

		// 2文字だが、lengthメソッドでは4が返る
		String str1 = "????????";
		System.out.println(str1.length()); // 4
		
		// codePointCountメソッドを使用。2が返る
		System.out.println
			(str1.codePointCount(0, str1.length())); // 2
	}
}

7行目は、サロゲートペアの文字です。2文字ですがlengthでは4が返ってきます。
12行目のようにでcodePointCount文字数と同じ2が返ってきます。

関連の記事

UnicodeとUTF-16とUTF-8の違い(秀丸で文字コードを確認)
秀丸 文字コードを確認する方法
JavaScript 文字からUnicodeを取得(codePointAt)
JavaScript Unicodeから文字を取得(fromCodePoint)

△上に戻る