1. はじめに
プログラムの世界では文字列の操作は避けて通れない道です。
Javaにおける文字列操作の多くは、Stringクラスに定義されているメソッドを用いて実行されます。
Stringクラスは、Javaで文字列を扱うためのクラスです。
文字列を操作する際に、文字列連結や部分文字列の取得など、様々なメソッドが提供されています。
ここで解説するメソッドをマスターすることで、文字列操作のスキルがグッと上がりますよ!
JavaのStringクラスとその主要なメソッド
JavaのStringクラスには、多くの便利なメソッドが提供されています。
この記事では、
- 「contains」
- 「getBytes」
- 「isEmpty」
- 「valueOf」
- 「codePointAt」
- 「codePointBefore」
- 「codePointCount」
などのメソッドを中心に解説します。
1. contains()メソッド
contains()メソッドは、特定の文字列が含まれているかをチェックするためのものです。
例えば、"Hello, World!"という文字列に"World"が含まれているかどうかをチェックする場合、以下のように使用します。
ソースコード例
1 2 3 4 5 6 7 |
public class Program { public static void main(String[] args) { String str = "Hello, World!"; boolean result = str.contains("World"); System.out.println(result); } } |
出力結果
true
KindleUnlimited会員であれば、全ての本をご覧頂けます。 StreamAPIを理解すれば、Javaの世界が変わる 第1版
2. getBytes()メソッド
getBytes()メソッドは、文字列をバイト配列として取得するためのメソッドです。
文字列をファイルに書き込む場合や、ネットワーク越しに送信する場合などに役立ちます。
ソースコード例
1 2 3 4 5 6 7 8 9 |
public class Program { public static void main(String[] args) { String str = "Hello, World!"; byte[] byteArray = str.getBytes(); for(byte b : byteArray) { System.out.print(b + " "); } } } |
出力結果
72 101 108 108 111 44 32 87 111 114 108 100 33
3. isEmpty()メソッド
isEmpty()メソッドは、文字列が空(長さが0)であるかどうかを確認するメソッドです。
これは特に、ユーザからの入力が空でないか、ファイルの読み込み内容が空でないかなど、チェックを行いたい場合に非常に役立ちます。
ソースコード例
1 2 3 4 5 6 7 8 |
public class Program { public static void main(String[] args) { String str1 = "Hello, World!"; String str2 = ""; System.out.println(str1.isEmpty()); System.out.println(str2.isEmpty()); } } |
出力結果
false true
4. valueOf()メソッド
valueOf()メソッドは、他のデータタイプ(int, char, doubleなど)を文字列として取得するためのメソッドです。
ログメッセージの作成や、他のデータタイプを文字列として連結したいときなどに使用します。
ソースコード例
1 2 3 4 5 6 7 |
public class Program { public static void main(String[] args) { int number = 12345; String str = String.valueOf(number); System.out.println(str); } } |
出力結果
12345
5. codePointAt()メソッド
codePointAt()メソッドは、指定されたインデックスのコードポイント(Unicodeコードユニット)を返すメソッドです。
これは特定の文字が何の文字であるかをUnicodeで判断したいときなどに使います。
ソースコード例
1 2 3 4 5 6 7 |
public class Program { public static void main(String[] args) { String str = "こんにちは"; int codePoint = str.codePointAt(0); System.out.println(codePoint); } } |
出力結果
12371
6. codePointBefore()メソッド
codePointBefore()
メソッドは、指定されたインデックスの直前の文字のUnicodeコードポイントを取得するメソッドです。これは文字列内の特定の位置にある文字のUnicode値を確認するのに利用します。特にテキストのエンコーディングやデコーディング、文字コードのチェックなどを行う際に活用できます。
ソースコード例
1 2 3 4 5 6 7 |
public class Program { public static void main(String[] args) { String str = "Hello, World!"; int codePoint = str.codePointBefore(1); System.out.println(codePoint); } } |
出力結果
72
このコードでは、codePointBefore(1)
を用いて、インデックス1(1番目の文字)の直前、つまり最初の文字('H')のUnicodeコードポイントを取得しています。出力される"72"は、文字'H'のUnicodeコードポイントを示しています。
8. codePointCount()メソッド
codePointCount()
メソッドは、指定された範囲にあるUnicodeコードポイントの数を返すメソッドです。このメソッドは特に、サロゲートペア(通常よりも多くのビットを使ってエンコードされた文字)を正確にカウントする際に有用です。サロゲートペアを使ってエンコードされた文字は、通常2つのchar
値を消費します。従って、length()
メソッドとcodePointCount()
メソッドが返す値は、サロゲートペアが文字列に含まれる場合、異なる可能性があります。
ソースコード例
1 2 3 4 5 6 7 8 9 10 |
public class Program { public static void main(String[] args) { String str = "𐐷ABC"; // 𐐷 is represented as a surrogate pair in UTF-16 int length = str.length(); int codePointCount = str.codePointCount(0, str.length()); System.out.println("Length: " + length); System.out.println("Code point count: " + codePointCount); } } |
出力結果
Length: 5 Code point count: 4
このコードの実行結果では、length()
メソッドが5を返すのに対して、codePointCount()
メソッドは4を返します。なぜなら、𐐷はサロゲートペアとして表現され、2つのchar
値を消費するためです。これがcodePointCount()
メソッドの有用性を如実に示しています。特定の範囲のコードポイントを正確に数える際に、このメソッドを使うことで文字列内のサロゲートペアを正しくカウントすることができます。
正確な文字数(コードポイント数)を知りたい場合や、文字列をUnicodeコードポイントとして処理する場合にcodePointCount()
メソッドは大変役立ちます。サロゲートペアを扱う際の注意点として、このメソッドを活用することで、多くのUnicode文字に対応したプログラムを構築することができます。
8. まとめ
本記事では、「contains()
」、「getBytes()
」、「isEmpty()
」、「valueOf()
」、「codePointAt()
」、「codePointBefore()
」、「codePointCount()
」メソッドについて、それぞれの目的や使用方法をJavaプログラミング言語を用いて解説しました。
これらのメソッドは、文字列の検索、変換、情報取得といった操作を容易かつ効率的に行うためのものであり、日々のコーディング作業をスムーズに進める上で欠かせないものとなります。
各メソッドの用途や特性を理解し、適切な場面で正しく利用することで、コードのパフォーマンスや可読性を向上させ、効率的な開発を実現する手助けとなります。
また、サロゲートペアやエンコーディングに関する知識も深め、多言語対応やユニバーサルなコーディングを目指しましょう。
本記事が、Javaでの文字列操作メソッドの利用に関して、少しでも参考になれば幸いです。さまざまなメソッドやテクニックを駆使して、素晴らしいプログラムを作成しましょう!
更に詳しい情報や他のメソッドについても学んでいき、スキルを高めていきましょう。
最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!