Javaの文字列操作をマスター!

Javaにおける文字列操作は非常に多彩で、開発者がプログラミングをする際に幅広い場面で活用します。
特に文字列比較や検索、部分文字列の取得などは、日々のコーディングワークにおいて欠かせないスキルとなっています。

1. 文字列の一致チェック:matchesメソッド
matches()メソッドを利用すると、文字列が特定の正規表現と一致しているかを確認することができます。
これにより、フォーム入力値のバリデーションや特定のパターンを持つ文字列の検出など、様々な場面で利用することができます。
ポイント
ソースコード例
| 
 1 2 3 4 5 6 7 8  | 
import java.util.regex.*; public class Program {     public static void main(String[] args) {         String str = "Hello, Java!";         System.out.println(str.matches("Hello, Java!"));  // true     } }  | 
 出力結果
true  
KindleUnlimited会員であれば、全ての本をご覧頂けます。 StreamAPIを理解すれば、Javaの世界が変わる 第1版

2. 文字列の内容比較:contentEqualsメソッド
次に、contentEquals()メソッドについて見ていきましょう。
このメソッドは、異なる型のオブジェクト(StringBufferやStringBuilderなど)と文字列の内容を比較する場合に利用します。
ポイント
contentEquals()は異なる文字列型との比較もサポートしている! ソースコード例
| 
 1 2 3 4 5 6 7  | 
public class Program {     public static void main(String[] args) {         String str1 = "Hello";         StringBuffer str2 = new StringBuffer("Hello");         System.out.println(str1.contentEquals(str2));  // true     } }  | 
 出力結果
true  
contentEquals()メソッドは、String.equals(Object anObject)メソッドとは異なり、文字列バッファを直接引数としてとることが可能です。

ソースコード例
| 
 1 2 3 4 5 6 7 8 9 10 11 12  | 
public class Program {     public static void main(String[] args) {         String str1 = "OpenAI";         StringBuffer strBuff = new StringBuffer("OpenAI");         if(str1.contentEquals(strBuff)) {             System.out.println("The content is equal.");         } else {             System.out.println("The content is NOT equal.");         }     } }  | 
 出力結果
The content is equal. 
compareToIgnoreCaseメソッド
compareToIgnoreCaseメソッドは、指定したStringと辞書順で比較します。
このメソッドは大文字と小文字の違いを無視します。

ソースコード例
| 
 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15  | 
public class Program {     public static void main(String[] args) {         String str1 = "Hello";         String str2 = "hello";         int result = str1.compareToIgnoreCase(str2);         if(result == 0) {             System.out.println("Both strings are equal.");         } else if(result < 0) {             System.out.println("Str1 comes before Str2.");         } else {             System.out.println("Str2 comes before Str1.");         }     } }  | 
 出力結果
Both strings are equal. 
internメソッド
internメソッドは、特定の文字列に対して、ストリングプール内の既存の同一文字列への参照を返します。このメソッドを使用すると、異なる文字列インスタンスが同じ内容を持っている場合、メモリ使用量の節約が期待できます。

ソースコード例
| 
 1 2 3 4 5 6 7 8 9 10 11 12  | 
public class Program {     public static void main(String[] args) {         String str1 = new String("OpenAI").intern();         String str2 = "OpenAI";         if(str1 == str2) {             System.out.println("Both strings refer to the same instance.");         } else {             System.out.println("The strings refer to different instances.");         }     } }  | 
 出力結果
Both strings refer to the same instance. 
subSequenceメソッド
subSequenceメソッドは、文字列の部分文字列をCharSequenceとして取得します。開始インデックスと終了インデックスを引数にとります。それぞれのインデックスの文字は、部分文字列の最初と最後の文字です。

ソースコード例
| 
 1 2 3 4 5 6 7 8  | 
public class Program {     public static void main(String[] args) {         String str = "Hello, World!";         CharSequence subSeq = str.subSequence(7, 12);         System.out.println("Substring is: " + subSeq);     } }  | 
 出力結果
Substring is: World 
copyValueOfメソッド
copyValueOfメソッドは、指定された文字配列の文字から文字列を作成します。また、オプションで開始インデックスと文字数を指定して部分的に文字配列から文字列を作成することもできます。

ソースコード例
| 
 1 2 3 4 5 6 7 8  | 
public class Program {     public static void main(String[] args) {         char[] charArray = {'J', 'a', 'v', 'a', '!', '!', '!'};         String str = String.copyValueOf(charArray, 0, 4);         System.out.println("Created string: " + str);     } }  | 
 出力結果
Created string: Java 
getCharsメソッド

getChars()メソッドは、指定された部分文字列を、文字配列の指定された位置にコピーします。このメソッドは、
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
と定義されており、srcBeginは部分文字列の開始インデックス、srcEndは終了インデックス、dstはコピー先の配列、dstBeginはコピー先の配列の開始位置を指定します。
このメソッドを使用すると、特定の部分文字列を別の文字配列にコピーでき、これにより文字列の一部を簡単に取り出すことができます。特に、大きな文字列データを効率的に部分的に処理する場合などに便利です。

具体的な使用例を以下に示します。
ソースコード例
| 
 1 2 3 4 5 6 7 8 9 10  | 
public class Program {     public static void main(String[] args) {         String str = "Programming with Java";         char[] charArray = new char[11];         str.getChars(0, 11, charArray, 0);         for(char c : charArray) {             System.out.print(c);         }     } }  | 
このコードでは、"Programming with Java"という文字列から最初の11文字を新しいchar配列にコピーしています。
そして、その結果を出力しています。
 出力結果 Programming  
ぜひ、getCharsメソッドをあなたのコードに導入し、その便利さを実感してください。
まとめ
Java言語におけるStringクラスは、多くの便利なメソッドを提供しており、これらを利用することで文字列の操作を効率よく、簡潔に実行することができます。特に、concatメソッド、equalsIgnoreCaseメソッド、lengthメソッド、replaceメソッド、internメソッド、subSequenceメソッド、copyValueOfメソッドなどは、日々のプログラミングにおいて非常に頻繁に使用されるものです。この記事で取り上げたメソッドを理解し使いこなすことで、コードがすっきりとし、読みやすくメンテナンスしやすいものとなるでしょう。
他のstringメソッドの解説はコチラ!
こちらもCHECK
- 
	 - 
【Java】javaのstringクラスのメソッドの使い方を徹底解説1 よく使用するjavaのstringクラスのメソッド一覧
Java Stringクラスのメソッド: 完全ガイド JavaのStringクラスは、文字列操作に関する多くの有用なメソッドを提供しています。この記事では、Stringクラスの主要なメソッドを取り上げ ...
続きを見る
 
また、これらのメソッドを使用したプログラムの実装例を通して、その利用方法についても学ぶことができました。もしまだ明確でない点や不安がある場合は、実際に手を動かしてこれらのメソッドを試し、実際の動作を確認しながら理解を深めていくことをお勧めします。
