IT・WEB・ゲーム業界の転職に強いR-Stone

転職コラム

Javaのsubstringとは?できることや記述方法をわかりやすく解説

Javaプログラミングで、文字列操作は避けて通れない重要なテーマです。そのなかでも、substringメソッドは特に頻繁に使用される機能の1つです。

本記事では、Javaのsubstringメソッドを、機能や記述方法、そして活用例を交え分かりやすく解説します。

初心者の方からベテランプログラマーまで、substringの真価を理解し、より効率的なコーディングを実現するための参考になれば幸いです。

あなたに合った仕事が必ず見つかる!
IT・WEB・ゲーム業界の案件が3,000件以上!!

Javaのsubstringとは

Javaのsubstringメソッドは、文字列の一部を簡単に切り出すことができます。例えば、長い文章から特定の単語や文を抽出したい場合や、データの一部を取り出したい場合に活用できます。

以下は、substringメソッドの基本的な使い方を示すコードです。

String 元の文字列 = “こんにちは、世界!”;

String 抽出結果 = 元の文字列.substring(6, 8);

System.out.println(抽出結果); // “世界”と出力されます

上記のようにsubstringメソッドを使えば、文字列の特定の範囲を簡単に取り出すことができます。

Javaのsubstringの魅力

substringメソッドの魅力は、汎用性と柔軟性にあります。

例えば、ログファイルから特定の情報を取り出したり、長い文字列を管理しやすい短い部分に分ける、固定長データから必要な部分だけを切り出すなどの処理はもちろん、他のStringメソッドと組み合わせて特定のパターンに基づいて文字列を処理するなど多様な用途に対応できます。

以下は、パターンに基づいて文字列を処理する例です。

String データ = “ID:12345,名前:山田太郎,年齢:30”;

String ID = データ.substring(3, 8);

String 名前 = データ.substring(データ.indexOf(“名前:”) + 3, データ.indexOf(“,年齢”));

String 年齢 = データ.substring(データ.lastIndexOf(“:”) + 1);

 

System.out.println(“ID: “ + ID);         // “12345”

System.out.println(“名前: “ + 名前);     // “山田太郎”

System.out.println(“年齢: “ + 年齢);     // “30”

substringは1つのメソッドでありながら、データの形式や目的に応じて柔軟に対応できます。複雑な正規表現を使わずとも、基本的な文字列操作の多くをカバーできる点が、substringの大きな魅力です。

Javaのsubstringで文字列を取り出す方法

substringメソッドの基本的な使い方は、開始位置と終了位置を指定した抽出です。ただし、文字列のインデックスは0から始まるため、最初の文字は0番目として扱われます。

例えば、文字列“Hello, World!”から“World”の部分を抽出したい場合、以下のようにコードを書きます。

String 元の文字列 = “Hello, World!”;

String 抽出結果 = 元の文字列.substring(7, 12);

System.out.println(抽出結果); // “World”と出力されます

上記コードのように、substringメソッドを使うことで、文字列の一部を簡単に取り出すことができます。

範囲指定から抜き出す

範囲指定から文字列を抜き出す場合、substringメソッドに開始位置と終了位置を指定します。インデックスの指定では、開始位置は含まれますが、終了位置は含まれないことに注意が必要です。

substring(開始位置, 終了位置);

例えば、文字列“プログラミング”から途中部分を抽出したい場合、以下のようにコードを書きます。

String 元の文字列 = “プログラミング”;

String 抽出結果 = 元の文字列.substring(2, 5);

System.out.println(抽出結果); // “グラミ”と出力されます

上記コードのように、開始位置と終了位置を指定すれば、文字列の特定の範囲を抽出できます。

先頭から抜き出す

文字列の先頭から特定の長さだけ抜き出したい場合、開始位置を0とし、終了位置に抽出したい文字数を指定します。

例えば、文字列“こんにちは世界”から最初の5文字を抽出したい場合、以下のようにコードを書きます。

String 元の文字列 = “こんにちは世界”;

String 抽出結果 = 元の文字列.substring(0, 5);

System.out.println(抽出結果); // “こんにちは”と出力されます

上記コードのように、先頭からの抽出も簡単におこなうことができます。

インデックスから抜き出す

特定のインデックスから文字列の末尾までを抽出したい場合、substringメソッドに開始位置のみを指定します。

例えば、文字列“Java programming”の6文字目以降を抽出したい場合、以下のようにコードを書きます。

String 元の文字列 = “Java programming”;

String 抽出結果 = 元の文字列.substring(5);

System.out.println(抽出結果); // “programming”と出力されます

上記コードのように、開始位置のみを指定すると、指定インデックスから文字列の末尾までを抽出できます。

後ろから抜き出す

文字列の末尾から特定の長さだけ抜き出したい場合、length()メソッドと組み合わせて使用します。

例えば、文字列“プログラミング言語”から最後の2文字を抽出したい場合、以下のようにコードを書きます。

String 元の文字列 = “プログラミング言語”;

String 抽出結果 = 元の文字列.substring(元の文字列.length() – 2);

System.out.println(抽出結果); // “言語”と出力されます

上記コードのように、length()メソッドを使うことで、文字列の末尾からの抽出も可能です。

indexOfと併用する場合

特定の文字や文字列を基準に抽出したい場合、indexOfメソッドとsubstringメソッドを組み合わせて使用します。

例えば、文字列“Hello, Java World!”から“Java”以降の部分を抽出したい場合、以下のようにコードを書きます。

String 元の文字列 = “Hello, Java World!”;

int 開始位置 = 元の文字列.indexOf(“Java”);

String 抽出結果 = 元の文字列.substring(開始位置);

System.out.println(抽出結果); // “Java World!”と出力されます

上記コードのように、indexOfメソッドで特定の文字列の開始位置を見つけ、開始位置からsubstringメソッドで抽出できます。

ただし、 元文字列が、ファイルやユーザーの入力に由来する場合、必ずしも特定の文字列が含まれていないケースもあるため、 indexOfメソッドが-1を返す場合(指定した文字列が見つからない場合)の処理は考慮する必要があります。

Javaのsubstringの注意点

Javaのsubstringメソッドは便利な文字列操作ツールですが、使用する際にはいくつかの注意点があります。適切に使用しないと、予期せぬエラーや非効率なコードにつながる可能性があります。

該当する文字列に注意する必要がある

substringメソッドを使用する際は、対象の文字列の内容や長さに十分注意を払う必要があります。特に気をつけるべき点がいくつかあります。

まず、IndexOutOfBoundsExceptionに注意が必要です。このエラーは、指定した開始位置や終了位置が文字列の範囲外にあると発生します。

例えば、以下のようなコードでエラーの起きる可能性があります。

String 文字列 = “こんにちは”;

String 切り出し = 文字列.substring(10); // IndexOutOfBoundsException

範囲外のエラーを回避するには、文字列の長さを事前にチェックするとよいでしょう。

String 文字列 = “こんにちは”;

if (文字列.length() >= 10) {

    String 切り出し = 文字列.substring(10);

} else {

    System.out.println(“文字列が短すぎます”);

}

また、nullチェックも重要です。nullの文字列に対してsubstringを呼び出すと、NullPointerExceptionが発生します。

String 文字列 = null;

String 切り出し = 文字列.substring(0, 5); // NullPointerException

エラーが発生する事態を避けるため、substringを使用する前にnullチェックをおこなうことをおすすめします。

substringを使わない方がよい場合もある

substringは便利なメソッドですが、常に最適な選択肢とは限りません。場合によっては、他の方法を選択したほうが効率的なこともあります。

例えば、正規表現を使用したほうが効率的な場合もあります。

特定のパターンに基づいて文字列を抽出したい場合、substringよりも正規表現の方が適しているでしょう。

String 文字列 = “123ABC456”;

String 数字のみ = 文字列.replaceAll(“[^0-9]”, “”); // “123456”

上記のコードは、数字以外の文字を空文字列に置換します。結果、“123ABC456”から数字の部分“123456”が抽出されます。

また、大量のデータを処理する場合、substringは新しい文字列オブジェクトを生成するため、メモリ使用量やパフォーマンスに注意が必要です。

substringは便利ですが、常に最適とは限らないことを覚えておきましょう。処理の内容や規模によって、最適な方法を検討してください。

まとめ

Javaのsubstringは文字列操作に欠かせないメソッドです。

範囲指定や先頭・末尾からの抽出など、さまざまな使い方ができます。

ただし、IndexOutOfBoundsExceptionやNullPointerExceptionに注意が必要です。文字列の長さやnullチェックは忘れずに。

substringを使いこなして、プログラミングスキルを向上させましょう。