JavaのStringクラスのsubstringメソッドを完全解説!初心者でもわかる文字列操作
生徒
「Javaで文字列の一部だけを取り出す方法ってありますか?」
先生
「良い質問ですね!Javaでは、Stringクラスのsubstringメソッドを使って、簡単に文字列の一部分を取り出すことができます。」
生徒
「具体的にはどのように使うんですか?」
先生
「それでは、基本的な使い方を見ていきましょう!」
1. substringメソッドとは?
substringは、文字列の「必要な部分だけ」を取り出すための基本メソッドです。文章の冒頭だけ見せたい、特定の位置から後ろを切り出したい、といった日常的な処理で活躍します。文字の数え方は左から順に「0, 1, 2, …」と数える0始まりで、取り出しの終わり側は「その直前まで(終端は含まない)」というルールです。この2点を押さえるだけで、substringの多くの操作は迷わず書けるようになります。
まずは雰囲気をつかむために、よくある挨拶文から一部を抜き出してみましょう。前半だけ取りたい、カンマ以降を丸ごと欲しい、といった要望を数行で表現できます。
public class IntroSubstring {
public static void main(String[] args) {
String text = "Hello, World!";
// 先頭(0)から5文字分 → "Hello"
String head = text.substring(0, 5);
// 7文字目(カンマと空白の直後)から最後まで → "World!"
String tail = text.substring(7);
System.out.println(head);
System.out.println(tail);
}
}
Hello
World!
このように、substring(開始位置, 終了位置)は「開始位置を含み、終了位置は含まない」区間を取り出します。終了位置を省略してsubstring(開始位置)と書けば、そこから文字列の終わりまでを一気に取得できます。たとえば「東京都千代田区」という文字列で「東京都」だけ取りたい場合はsubstring(0, 3)、後半の「千代田区」を取りたい場合はsubstring(3)のように書けます。まずは「0から数える」「終わりは含まない」を指でなぞりながら確認してみるのがおすすめです。
2. substringメソッドの基本的な使い方
substringには2種類の呼び出し方があります。どちらも「左から0,1,2…と数える0始まり」で位置を指定します。もう一つ大切なルールは、substring(開始, 終了)の「終了」は含まれないという点です。つまり「開始を含み、終了の直前まで」を切り出します。まずはこの2点をしっかり押さえましょう。
substring(int beginIndex):beginIndexから最後までを取得します。substring(int beginIndex, int endIndex):beginIndex(含む)〜 endIndex(含まない)を取得します。
最小の例から確認します。インデックスのイメージをコメントで示しています。
public class BasicSubstring {
public static void main(String[] args) {
String s = "Hello, World!";
// インデックス: 0 1 2 3 4 5 6 7 8 9 10 11 12
// 文字: H e l l o , W o r l d !
// 1) 先頭から5文字(0〜5の手前) → "Hello"
String a = s.substring(0, 5);
// 2) 7文字目から最後まで(7〜終わり) → "World!"
String b = s.substring(7);
// 3) カンマと空白(5,6)を除いた "Hello" と "World" の間だけ → " World"
String c = s.substring(5, 12); // 5は「,」、12は「!」の直前まで
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
Hello
World!
, World
日本語の文字列でも同じ感覚で扱えます。たとえば「東京都千代田区」を「東京都」「千代田区」に分けたい場合は、見たい位置で素直に切り分けます。
public class JapaneseSubstring {
public static void main(String[] args) {
String place = "東京都千代田区";
// 0〜3の手前 → "東京都"
String pref = place.substring(0, 3);
// 3から最後まで → "千代田区"
String city = place.substring(3);
System.out.println(pref);
System.out.println(city);
}
}
東京都
千代田区
「どこからどこまで」を毎回数えるのが不安な場合は、次の2つのコツが役立ちます。
- 終了は含まれないので、ちょうど区切りたい位置を「終点」として指定すると覚えやすい(例:0〜5で先頭5文字)。
- 開始と終了が同じだと空文字(長さ0)が返るので、「何も取らない」指定が可能。
もう少しだけ応用例です。名前の苗字と名前を、固定の区切り位置で抜き出します(実務では可変長のこともありますが、ここでは基本操作の練習として固定で扱います)。
public class NameSplitFixed {
public static void main(String[] args) {
String full = "山田太郎";
// 苗字は先頭2文字、名前は3文字目以降という前提
String family = full.substring(0, 2);
String given = full.substring(2);
System.out.println(family + " / " + given); // → 山田 / 太郎
}
}
山田 / 太郎
ここまでのポイントをまとめると、「0始まり」「終了は含まない」「開始だけ指定すれば末尾まで」がsubstringの基本です。まずは短い単語や地名で手を動かして、狙った位置で切り出せる感覚をつかみましょう。
3. substringメソッドの例
次のコードは、substringメソッドを使用して文字列の一部分を抽出する例です。
public class SubstringExample {
public static void main(String[] args) {
String message = "Hello, World!";
// 5文字目から最後までを取得
String sub1 = message.substring(7);
System.out.println(sub1); // 出力: World!
// 0文字目から5文字目までを取得
String sub2 = message.substring(0, 5);
System.out.println(sub2); // 出力: Hello
}
}
このプログラムを実行すると、次のような結果が得られます:
World!
Hello
最初のsubstring(7)は、文字列の7番目の位置から最後までを取得しています。一方、substring(0, 5)は、0番目から4番目の文字までを取り出しています。こうして特定の部分文字列を簡単に抽出できます。
4. substringの使いどころと注意点
プログラミングでsubstringメソッドを使うと、ファイル名の一部を取り出したり、URLのドメイン部分を抽出したりと、様々な場面で活用できます。
ただし、注意すべき点として、substringメソッドで無効なインデックスを指定するとStringIndexOutOfBoundsExceptionというエラーが発生します。例えば、文字列の長さを超えたインデックスを指定するとエラーになります。こうしたエラーを防ぐため、事前に文字列の長さを確認することが重要です。
public class SafeSubstringExample {
public static void main(String[] args) {
String text = "Java Programming";
int length = text.length();
if (length >= 10) {
System.out.println(text.substring(0, 10)); // 文字列が10文字以上ある場合
} else {
System.out.println("文字列が短すぎます。");
}
}
}
このように、length()メソッドと組み合わせることで、安全にsubstringを使用することができます。
5. まとめ
本記事では、JavaのStringクラスのsubstringメソッドについて詳しく解説しました。このメソッドを使うことで、文字列の一部分を簡単に抽出できることがわかりました。例えば、ファイル名やURLの一部を取り出したり、文字列データを効率的に操作することが可能です。基本的な使い方から、エラー回避のための注意点まで解説しましたが、初心者の方でも応用できるように理解を深めることが重要です。
特に、substringメソッドは日常的なプログラムにおいて多くのシーンで活躍します。文字列の長さを超えるインデックスを指定するとエラーになるため、length()メソッドを活用して安全に操作する方法を習得しましょう。
また、この記事で紹介したコード例を自分で試してみることで、実際にどのように動作するのかを確認できます。実践を通して学ぶことで、文字列操作に関する知識をより深めることができます。
生徒
「substringメソッドについてよくわかりました!ファイル名や文字列の一部を取り出すのに便利そうですね。」
先生
「その通りです。例えば、ユーザーが入力したテキストの特定部分を取り出すといった実用的なシナリオで役立ちますね。」
生徒
「でも、インデックスを間違えるとエラーになる可能性があるんですよね?」
先生
「そうです。だからこそ、length()メソッドで文字列の長さを確認したり、条件分岐を使って安全に処理することが重要です。」
生徒
「わかりました!エラーを防ぐためのコードも実践してみます。」
先生
「いいですね。substringをマスターすれば、文字列処理が一層楽しくなりますよ。」