Java の「substring()」で文字列を部分的に取り出す使い方を解説
新人
「Java で文字列の一部だけを取り出す方法ってありますか?」
先輩
「Java では、substring() メソッドを使うことで、簡単に文字列の一部分を取得できるよ。」
新人
「具体的にどうやって使うんですか?」
先輩
「それじゃあ、substring() メソッドの基本から見ていこう!」
1. substring() メソッドとは?(基本的な説明)
Java の substring() メソッド は、文字列の一部分を抽出するためのメソッドです。
substring() メソッドの特徴
- 文字列の一部分を取得できる
- 開始位置や終了位置を指定して部分文字列を取り出せる
- 元の文字列は変更されない(新しい文字列として返される)
例えば、「Hello, World!」という文字列から「Hello」だけを取り出すことができます。
2. substring() の基本的な使い方
まずは、基本的な substring() メソッドの使い方を見てみましょう。
文字列の一部を取り出す基本例
public class SubstringExample {
public static void main(String[] args) {
String text = "Hello, World!";
String subText = text.substring(0, 5);
System.out.println("取り出した文字列: " + subText);
}
}
取り出した文字列: Hello
コードの解説
String text = "Hello, World!";… 元の文字列を用意するtext.substring(0, 5);… 0 文字目から 5 文字目までの部分文字列を取得するSystem.out.println(subText);… 取得した文字列を表示
このように、substring() メソッドを使うことで、特定の範囲の文字列を簡単に取り出すことができます。
3. 文字列の一部分を取り出す(開始位置のみ指定)
substring() メソッドでは、開始位置だけを指定して、文字列の一部を取り出すことができます。
開始位置を指定する基本例
public class SubstringStartExample {
public static void main(String[] args) {
String text = "Java Programming";
String subText = text.substring(5);
System.out.println("取り出した文字列: " + subText);
}
}
取り出した文字列: Programming
コードの解説
text.substring(5);… 5文字目(インデックス5)から最後までを取得する- 「Java Programming」という文字列の 5 文字目は「P」なので、「Programming」が抽出される
開始位置のみ指定すると、指定した位置から文字列の最後までを取得できます。
4. 文字列の一部分を取り出す(開始位置と終了位置を指定)
開始位置と終了位置の両方を指定することで、より細かく文字列を取り出せます。
開始位置と終了位置を指定する基本例
public class SubstringRangeExample {
public static void main(String[] args) {
String text = "Java Programming";
String subText = text.substring(5, 16);
System.out.println("取り出した文字列: " + subText);
}
}
取り出した文字列: Programming
コードの解説
text.substring(5, 16);… 5 文字目から 16 文字目の手前までを取得- 「Java Programming」の 5 文字目は「P」、16 文字目の手前は「g」なので、「Programming」が抽出される
開始位置と終了位置の両方を指定することで、特定の範囲の文字列を取得できます。
5. substring() メソッドの使いどころ
substring() メソッドは、以下のような場面で役立ちます。
1. ユーザー名やドメインの取得
例えば、メールアドレスからユーザー名だけを取得することができます。
public class EmailSubstringExample {
public static void main(String[] args) {
String email = "user@example.com";
String userName = email.substring(0, email.indexOf("@"));
System.out.println("ユーザー名: " + userName);
}
}
ユーザー名: user
2. 特定のデータを取り出す
例えば、日付文字列「2025-03-20」から年だけを取得できます。
public class DateSubstringExample {
public static void main(String[] args) {
String date = "2025-03-20";
String year = date.substring(0, 4);
System.out.println("年: " + year);
}
}
年: 2025
このように、substring() を使うことで、特定のデータを簡単に取り出すことができます。
6. substring() と length() を組み合わせる応用例
substring() メソッドと length() メソッドを組み合わせることで、文字列の最後の数文字だけを取得することができます。
最後の3文字を取得する例
public class SubstringLastExample {
public static void main(String[] args) {
String text = "Hello, World!";
String lastThree = text.substring(text.length() - 3);
System.out.println("最後の3文字: " + lastThree);
}
}
最後の3文字: ld!
コードの解説
text.length() - 3… 文字列の長さから 3 を引いた位置から部分文字列を取得- 「Hello, World!」の長さは 13 なので、
text.substring(10)となり、「ld!」が抽出される
このように substring() と length() を組み合わせることで、文字列の最後の一部を取得できます。
7. 文字列を分割する方法(substring() と indexOf() の活用)
indexOf() メソッドと substring() を組み合わせることで、特定の文字を基準に文字列を分割できます。
区切り文字(@)を使ったメールアドレスの分割
public class EmailSplitExample {
public static void main(String[] args) {
String email = "user@example.com";
int atIndex = email.indexOf("@");
String userName = email.substring(0, atIndex);
String domain = email.substring(atIndex + 1);
System.out.println("ユーザー名: " + userName);
System.out.println("ドメイン: " + domain);
}
}
ユーザー名: user
ドメイン: example.com
コードの解説
email.indexOf("@")…@の位置を取得email.substring(0, atIndex)…@の前の部分を取得(ユーザー名)email.substring(atIndex + 1)…@の後の部分を取得(ドメイン)
このように indexOf() を活用すると、特定の文字を基準に文字列を分割できます。
8. 練習問題:substring() を使ったプログラムを作ろう
最後に、substring() メソッドを活用する練習問題をやってみましょう。
問題1: 文字列の最初の3文字を取得
「Java Programming」という文字列の最初の3文字を取得し、表示するプログラムを作成してください。
解答例
public class SubstringPractice1 {
public static void main(String[] args) {
String text = "Java Programming";
String firstThree = text.substring(0, 3);
System.out.println("最初の3文字: " + firstThree);
}
}
最初の3文字: Jav
問題2: URL からドメイン名を取得
「https://example.com」という URL から「example.com」だけを取得し、表示するプログラムを作成してください。
解答例
public class SubstringPractice2 {
public static void main(String[] args) {
String url = "https://example.com";
String domain = url.substring(url.indexOf("://") + 3);
System.out.println("ドメイン名: " + domain);
}
}
ドメイン名: example.com
これで、substring() の使い方がしっかり理解できましたね!
まとめ
今回は、Java の substring() メソッドについて、その基本から応用までを体系的に学びました。substring() は、文字列処理の中でも特に使用頻度が高く、Java の初学者にとっても欠かせない基本メソッドのひとつです。文字列から必要な部分だけを取り出すという操作は、プログラム内の多くの場面で登場し、データの抽出や表示の制御、さらにはロジックの分岐にも活用されます。
特に、開始位置のみを指定する使い方や、開始位置と終了位置を両方指定する方法は、実務においても非常に役立ちます。また、substring() と indexOf() を組み合わせることで、メールアドレスの分解や、ドメイン名の抽出、日付情報の分割など、より実践的な文字列操作が可能になります。さらに length() メソッドとの組み合わせにより、文字列の末尾から特定の部分を取り出すなど、応用の幅も広がります。
たとえば、以下のように文字列の最後の5文字を抽出するコードも簡単に書けます。
public class SubstringLastFive {
public static void main(String[] args) {
String str = "こんにちは、Javaの世界!";
String lastFive = str.substring(str.length() - 5);
System.out.println("最後の5文字: " + lastFive);
}
}
最後の5文字: Javaの世界!
実際の開発現場では、ログの整形、ユーザー名やメールドメインの抽出、APIレスポンスの分解など、substring() の活用シーンは数えきれません。
また、前後の位置を動的に計算することで、さまざまな文字列に柔軟に対応できるという点も、非常に大きな利点です。
今後、正規表現や split() など他の文字列操作と組み合わせることで、さらに複雑な文字列処理も実現できるようになります。そのためにも、まずはこの substring() の仕組みや使い方を確実に理解し、自分のコードで使いこなせるようになることが重要です。
特に、メールアドレスや URL、日付形式の文字列など、よくある入力形式に対して substring() を使って必要な部分を取り出すスキルは、現場のプログラマーにとって非常に役立つ基礎力となるでしょう。繰り返し練習し、どんな文字列でも柔軟に対応できるようにしていきましょう。
新人
今日は substring() の基本と応用をしっかり学べた気がします!
先輩
うん、それは良かった!文字列の取り出しはシンプルだけど、非常に大切な操作だからね。
新人
substring(開始位置) や substring(開始, 終了) の違いも理解できましたし、indexOf() と組み合わせてメールアドレスを分割するところは面白かったです!
先輩
それが理解できたら、実務でのデータ処理もスムーズに進むようになるよ。応用として、URLからドメインを抜き出したり、最後の数文字を取得する操作も忘れずにね。
新人
はい!まずは練習問題を自分でも改造してみたり、他の文字列で試したりしてみます!
先輩
いい心がけだね。どんどん手を動かして、コードを通じて substring() を体に染み込ませていこう!