Javaのlengthメソッドで、文字列の長さを取得するサンプルです。
目次
文字列 | 文字列の長さを取得する(length) |
サロゲートペアの文字列の長さを取得する(codePointCount) |
文字列の長さを取得する(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コード・ポイントを返します。
サロゲートペアの文字列の長さを取得する(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)