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

Javaの文字列の長さを取得するサンプルです。
Stringクラスのlengthメソッドを使用します。

確認環境
・Java 8

目次

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コード・ポイントを返します。

 

サロゲートペアの文字列

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
	}
}

関連の記事

UnicodeとUTF-16とUTF-8の違い(秀丸で文字コードを確認)
秀丸 カーソルで文字コードを表示する方法
JavaScript Unicodeコードポイントを取得する(codePointAt)
JavaScript Unicodeの文字コードから文字を取得(fromCodePoint/fromCharCode)

△上に戻る