文字列長を取得する – length/codePointCountメソッド
public int codePointCount(int begin, int end)
public int length()
begin:長さを求める範囲の開始位置
end:終了位置
文字列の長さを取得するには、lengthメソッドを利用します。文字列はUnicode単位でカウントされますので、日本語(マルチバイト文字)を含んでいても正しくカウントできます。
StrLength.java
- package com.example.mynavi.string;
- public class StrLength {
- public static void main(String args) {
- var str = "ALPHAプロジェクト";
- System.out.println(str.length()); // 結果:11
- }
- }
ただし、文字列にサロゲートペアが含まれる場合には正しい値になりません。その場合は、lengthメソッドの代わりに、codePointCountメソッドを利用してください。
StrCodePoint.java
- package com.example.mynavi.string;
- public class StrCodePoint {
- public static void main(String args) {
- var str = "叱る";
- System.out.println(str.length());; // 結果:3
- System.out.println(str.codePointCount(0, str.length())); // 結果:2
- }
- }
上の例では、「叱」はサロゲートペアです。そのため、lengthメソッドでは正しく文字数をカウントできていませんが、codePointAtメソッドでは正しく「2」とカウントできていることが確認できます。 codePointAtメソッドでは、文字列をカウントする際の開始/終了位置が必須なので、文字列全体をカウントするには、それぞれ0(先頭)、str.length(末尾)を指定します。
サロゲートペア
Unicode(UTF-16)では、通常、1文字を2バイトで表現します。しかし、Unicodeで扱うべき文字が増えるにつれ、2バイトで表現できる文字数(65535文字)では不足するようになりました。そこで、一部の文字を4バイトで表現することで、扱える文字数を増やすことになったわけです。このような文字のことをサロゲートペアと言います。
- 文字列_目次
- 文字列
- length/codePointCountメソッド
- isEmptyメソッド
- charAtメソッド
- indexOf/lastIndexOfメソッド
- equals/equalsIgnoreCaseメソッド
- regionMatchesメソッド
- compareTo/compareToIgnoreCaseメソッド
- trimメソッド
- startsWith/endsWithメソッド
- toLowerCase/toUpperCaseメソッド
- substringメソッド
- replaceメソッド
- splitメソッド
- joinメソッド
- formatメソッド
- appendメソッド
監修
山田祥寛(有限会社 WINGSプロジェクト)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NEC にてシステム企画業務に携わるが、2003年 4 月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト(https://wings.msn.to/)」の代表でもある。主な著書に『改訂 3 版JavaScript 本格入門』(技術評論社)、「独習シリーズ(C#・Python・PHP・Ruby・JSP&サーブレットなど)」(翔泳社)、「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravel など)」(Amazon Kindle)など。売り上げの累計は100万部を超える。