Javaプログラミングでも、文字列操作は避けて通れない重要な作業です。
文字列操作のなかでも、substringメソッドは欠かせない、多用されるツールとして知られています。
本記事では、substringメソッドの基本的な使い方から応用例、さらにはエラー回避の方法まで、実践的な知識を詳しく解説します。
substringを使いこなし、より効率的で柔軟な文字列処理をものにしてください。
Javaのsubstringについて

Javaのsubstringメソッドは、文字列の一部を抽出するための便利な機能です。Stringクラスのメソッドとして提供されており、プログラム内で文字列を操作する際に重要な役割を果たします。
substringの基本的な使い方について
substringメソッドには2つの基本的な使い方があります。
文字列の一部を抽出するには、元の文字列のどの部分(どの文字からどの文字まで)を取得するのかを数値で指定する必要があります。
substringメソッドの基本的な書き方は次の2通りです。
String 抽出結果1 = 元の文字列.substring(開始インデックス); // パターン1
String 抽出結果2 = 元の文字列.substring(開始インデックス, 終了インデックス); // パターン2
上記の例で、
- ・パターン1では、開始インデックスのみを指定し、元の文字列の指定位置から末尾までを抽出します。
- ・パターン2では、開始インデックスと終了インデックスの間にある文字列を抽出します。(ただし終了インデックスの文字は含みません)
なお、substringメソッドは新しいStringオブジェクトを返すため、元の文字列は変更されません。このため、抽出結果を別の変数に代入して使用するのが一般的です。
文字インデックスとは
文字の位置を示すインデックスは0から始まることに注意が必要です。
下記の例では、0=こ、1=ん、2=に、3=ち、4=は、5=世、6=界がインデックスと文字の対応関係です。
開始位置のみを指定する例
文字列の、指定の開始位置から末尾までを抽出します。
String 元の文字列 = “こんにちは世界”;
String 抽出結果 = 元の文字列.substring(3); // 開始インデックスのみを指定
System.out.println(抽出結果); // “ちは世界”と出力されます
開始位置と終了位置を指定する例
文字列の、指定の開始位置から指定の終了位置の手前までを抽出します。
終了位置を指定する場合、終了位置の文字は含まれません。
String 元の文字列 = “こんにちは世界”;
String 抽出結果 = 元の文字列.substring(0, 5); // 開始インデックスと終了インデックスを指定
System.out.println(抽出結果); // “こんにちは”と出力されます
substringの便利な使い方
substringメソッドは、Javaで文字列操作をおこなう際にとても便利なツールです。
substringメソッドを活用すると、データの一部を切り取って計算に使ったり、特定の文字列を含むデータを抽出したり、種類別に合計額を計算したりできます。
データの一部を切り取り計算に使える
substringメソッドを使うと、文字列から必要な部分だけを抜き出して数値計算に利用できます。
例えば、請求書番号から日付を抽出する場合、次のようなコードが考えられます。
String 請求書番号 = “INV20230515001”;
String 日付部分 = 請求書番号.substring(3, 11);
System.out.println(“請求日: ” + 日付部分);
上記のコードでは、請求書番号から日付部分(20230515)を抽出しています。抽出した数値を利用して、さらに計算をおこなうこともできます。
指定の文字列が含まれるデータを抽出できる
substringメソッドとindexOf()メソッドを組み合わせると、特定の文字列を含むデータを効率的に抽出できます。
例えば、プロジェクト名に「Java」が含まれるデータを抽出する場合、次のようなコードが考えられます。
String プロジェクト = “大規模Javaアプリケーション開発”;
int 開始位置 = プロジェクト.indexOf(“Java”);
if (開始位置 != -1) {
String 抽出結果 = プロジェクト.substring(開始位置);
System.out.println(“抽出されたプロジェクト: ” + 抽出結果);
}
上記のコードでは、文字列に「Java」が含まれる場合、「Java」の位置から後ろの部分を抽出しています。
種類別に合計額を計算できる
substringメソッドを使って文字列から種類情報を抽出し、種類に基づいて合計額を計算できます。
例えば、商品コードから種類を判断し、種類別の売上を集計する場合、次のようなコードが考えられます。
String[] 商品コード = {“A001”, “B002”, “A003”, “C004”, “B005”};
int[] 金額 = {1000, 2000, 1500, 3000, 2500};
int A種合計 = 0, B種合計 = 0, C種合計 = 0;
for (int i = 0; i < 商品コード.length; i++) {
String 種類 = 商品コード[i].substring(0, 1);
switch (種類) {
case “A”: A種合計 += 金額[i]; break;
case “B”: B種合計 += 金額[i]; break;
case “C”: C種合計 += 金額[i]; break;
}
}
System.out.println(“A種合計: ” + A種合計);
System.out.println(“B種合計: ” + B種合計);
System.out.println(“C種合計: ” + C種合計);
上記のコードでは、商品コードの最初の1文字を抽出して種類を判断し、それぞれの種類ごとに合計額を計算しています。
substringの使用例
Javaのsubstringメソッドは、文字列から特定の部分を抽出するために使われます。
substringメソッドを使うと、文字列の一部をさまざまな位置を指定し、抽出できます。
以下では、substringの具体的な使用例をいくつか紹介します。
指定範囲から文字列を抜き出す場合
substringメソッドを使って、文字列の特定の範囲を抽出できます。開始インデックスと終了インデックスを指定すると、両者の間の文字列を取り出すことができます。
String 元の文字列 = “こんにちは、世界!”;
String 抽出結果 = 元の文字列.substring(4, 7);
System.out.println(抽出結果); // “は、世”と出力されます
上記の例では、インデックス4番目の文字からインデックス7番目の文字の直前までを抽出しています。インデックスは0から始まるため、4番目の文字は「は」になります。
先頭から文字列を抜き出す場合
文字列の先頭から特定の位置までを抽出したい場合、開始インデックスは固定で0を指定し、終了インデックスのみを指定します。
終了インデックスにより、文字列の先頭から指定した終了インデックスの手前までの部分を取り出すことができます。
String 元の文字列 = “プログラミングは楽しい”;
String 抽出結果 = 元の文字列.substring(0, 7);
System.out.println(抽出結果); // “プログラミング”と出力されます
上記の例では、文字列の先頭からインデックス7番目の直前までを抽出しています。
後ろから文字列を抜き出す場合
文字列の末尾から特定の長さの部分を抽出したい場合、length()メソッドと組み合わせて使います。
length()から長さを差し引いた値を開始インデックスに指定すれば、文字列の末尾から指定した長さの部分を取り出せます。
String 元の文字列 = “Javaプログラミング”;
String 抽出結果 = 元の文字列.substring(元の文字列.length() – 5);
System.out.println(抽出結果); // “グラミング”と出力されます
上記の例では、文字列の末尾から5文字分を抽出しています。
インデックスから文字列を抜き出す場合
特定の文字や文字列を基準にして、基準の位置から文字列を抽出できます。
indexOf()メソッドと組み合わせることで、動的なインデックス指定が可能になります。
String 元の文字列 = “Hello, Java World!”;
int 開始位置 = 元の文字列.indexOf(“Java”);
String 抽出結果 = 元の文字列.substring(開始位置);
System.out.println(抽出結果); // “Java World!”と出力されます
上記の例では、文字列“Java”が始まる位置から末尾までを抽出しています。
substringでエラーを回避するには
Javaのsubstringメソッドを使用する際、エラーを回避するためにいくつかの注意点があります。
Javaエンジニアとして仕事をする際は、発生しうるエラー処理を適切におこなうことが、高品質なコードを書くうえでとても重要です。
インデックスの範囲チェック
まず、IndexOutOfBoundsException例外に気をつける必要があります。IndexOutOfBoundsExceptionは、指定した文字列の範囲が元の文字列の長さを超えている場合に発生します。
例外を防ぐには、文字列の長さをあらかじめチェックするのが大切です。
例えば、以下のようなコードで文字列の長さをチェックできます。
String もとの文字列 = “こんにちは”;
int 開始位置 = 2;
int 終了位置 = 5;
if (開始位置 >= 0 && 終了位置 <= もとの文字列.length() && 開始位置 <= 終了位置) {
String 切り取り結果 = もとの文字列.substring(開始位置, 終了位置);
System.out.println(切り取り結果);
} else {
System.out.println(“範囲が不正です”);
}
null値のチェック
次に、nullチェックも重要です。nullの文字列に対してsubstringを呼び出すと、NullPointerException例外が発生します。
例外を防ぐには、substringを呼び出す前にnullチェックをおこないましょう。
String もとの文字列 = null;
if (もとの文字列 != null) {
String 切り取り結果 = もとの文字列.substring(0, 2);
System.out.println(切り取り結果);
} else {
System.out.println(“文字列がnullです”);
}
try-catchの使用
また、try-catchブロックを使用してエラーを捕捉するのも有効です。try-catchにより、エラーが発生しても処理を継続できます。
String もとの文字列 = “こんにちは”;
try {
String 切り取り結果 = もとの文字列.substring(0, 10);
System.out.println(切り取り結果);
} catch (IndexOutOfBoundsException 例外) {
System.out.println(“範囲が不正です: ” + 例外.getMessage());
}
上記のコード例では、インデックスの範囲を超えてIndexOutOfBoundsException例外が発生した場合も、メッセージを表示して処理を継続できます。
まとめ
Javaのsubstringメソッドは、文字列から特定の部分を簡単に抽出できる便利な機能です。
先頭からの抽出、後ろからの抽出、指定範囲の抽出など、さまざまな使用例があります。
エラー回避のためのチェックや例外処理も忘れずにおこないましょう。substringを使いこなし、効率的な文字列処理を実現してください。
フリーランスの案件をお探しの方はTechReachにご相談ください。
TechReachを運営する株式会社アールストーンはIT・Web業界特化で15年以上の実績がございます。
そのため、高単価・高品質な数多くの案件紹介が可能です。
また一人のコンサルタントが企業と求職者様の担当を行う「両面型エージェント」を採用しているため、あなたの希望に合う案件がきっと見つかるはずです。
TechReachを活用して、理想の案件を見つけましょう!