java substring 使い方: 文字列操作の魔法を解き明かす

Javaプログラミングにおいて、文字列操作は非常に重要なスキルの一つです。特に、substring
メソッドは、文字列の一部を抽出する際に頻繁に使用されます。この記事では、substring
の基本的な使い方から応用まで、多角的に解説します。
1. substringメソッドの基本
substring
メソッドは、文字列の一部を抽出するために使用されます。基本的な構文は以下の通りです。
String str = "Hello, World!";
String subStr = str.substring(7, 12);
System.out.println(subStr); // "World"
この例では、str
の7番目から12番目の文字を抽出しています。Javaでは文字列のインデックスは0から始まるため、7番目は実際には8文字目を指します。
2. インデックスの理解
substring
メソッドの引数は、開始インデックスと終了インデックスです。開始インデックスは抽出する文字列の最初の文字を指し、終了インデックスは抽出する文字列の最後の文字の次のインデックスを指します。
String str = "Java Programming";
String subStr = str.substring(5, 16);
System.out.println(subStr); // "Programming"
この例では、5番目から16番目の文字を抽出しています。終了インデックスが16であるため、実際には15番目の文字までが抽出されます。
3. 単一引数のsubstring
substring
メソッドは、単一の引数でも使用できます。この場合、指定したインデックスから文字列の最後までが抽出されます。
String str = "Java is fun!";
String subStr = str.substring(8);
System.out.println(subStr); // "fun!"
この例では、8番目から文字列の最後までが抽出されています。
4. 負のインデックスと例外
Javaのsubstring
メソッドは、負のインデックスや範囲外のインデックスを指定すると、StringIndexOutOfBoundsException
が発生します。
String str = "Hello";
try {
String subStr = str.substring(-1, 3);
} catch (StringIndexOutOfBoundsException e) {
System.out.println("Invalid index!");
}
この例では、負のインデックスを指定しているため、例外が発生します。
5. substringの応用
substring
メソッドは、文字列の解析やデータの抽出に非常に有用です。例えば、CSVファイルの各行から特定の列を抽出する場合などに使用できます。
String csvLine = "John,Doe,30,New York";
String[] columns = csvLine.split(",");
String city = columns[3];
System.out.println(city); // "New York"
この例では、CSV行をカンマで分割し、4番目の列を抽出しています。
6. パフォーマンスの考慮
substring
メソッドは、新しい文字列オブジェクトを作成するため、大量のデータを処理する場合にはパフォーマンスに影響を与える可能性があります。そのため、文字列操作が頻繁に行われる場合には、StringBuilder
やStringBuffer
を使用することを検討してください。
StringBuilder sb = new StringBuilder("Java is powerful");
sb.delete(5, 8);
System.out.println(sb.toString()); // "Java powerful"
この例では、StringBuilder
を使用して文字列の一部を削除しています。
7. まとめ
substring
メソッドは、Javaプログラミングにおいて非常に便利なツールです。基本的な使い方から応用まで、さまざまな場面で活用できます。ただし、パフォーマンスや例外処理にも注意を払う必要があります。
関連Q&A
Q1: substring
メソッドとsubSequence
メソッドの違いは何ですか?
A1: substring
メソッドは文字列を返しますが、subSequence
メソッドはCharSequence
インターフェースを実装したオブジェクトを返します。基本的な機能は同じですが、返される型が異なります。
Q2: substring
メソッドで抽出した文字列を変更することはできますか?
A2: substring
メソッドで抽出した文字列は不変(immutable)です。変更するためには、新しい文字列を作成する必要があります。
Q3: substring
メソッドを使用して文字列の最後のn文字を抽出するにはどうすればよいですか?
A3: 文字列の長さからnを引いたインデックスを開始位置として指定します。
String str = "Hello, World!";
int n = 5;
String lastN = str.substring(str.length() - n);
System.out.println(lastN); // "orld!"
この例では、最後の5文字を抽出しています。