Javaの文字列の長さを取得するサンプルです。
Stringクラスのlengthメソッドを使用します。
| 確認環境 ・Java 8 |
目次
lengthメソッド
| public int length() |
- 文字列の長さ(文字数)を返します。
- 半角の1文字は1文字です。
- 日本語の全角文字の1文字も1文字としてカウントします。
- Stringクラスのメソッドです。
- 以下はJava8 API仕様のlengthメソッドのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#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)