javaでsubstringを使って文字列を切り出しする方法を解説!

この記事では、javaでsubstringを使って文字列を切り出しする方法を解説しています。

Javaのsubstring()メソッドは
開始インデックスのみ指定する方法
開始と終了のインデックス両方を指定する方法
の2種類の使い方が存在します。

今回はsubstring()メソッドの2種類の使い方について、初心者でもわかりやすいサンプルコード付きで解説していきます。

substringとは

Javaのsubstring()メソッドは、指定された文字列を切り出して新しい文字列を返します
渡されたインデックス(番号)に基づき、指定した文字列を取得するために使用されます。

例えば下記の図のように、”0123456789″という文字列を切り出し”567″にしたい場合に使います。

 substringイメージ画像

substringの構文

開始インデックスのみを指定する場合

開始インデックスのみを指定する場合の構文

substring()メソッドの構文は2種類あると冒頭でも説明しました。

1つ目は『開始インデックスのみを指定する場合』です。
開始インデックスのみを指定した場合、開始インテックスから最後の文字列まで切り出されます。
例えば、”0123456789″という文字列があり開始インデックスに5を指定した場合”56789″が切り出されます。

substringイメージ画像

開始インデックスと終了インデックスの両方を指定する場合

開始インデックスと終了インデックスの両方を指定する場合の構文

2つ目が『開始インデックスと終了インデックスの両方を指定する場合』です。

開始と終了のインデックス両方指定した場合は、指定した開始インデックスから指定した終了インデックスまで切り出されます。
例えば、”0123456789″という文字列に開始インデックスを5終了インデックスを7と指定したとしたら文字列”567″が出力されます。

 substringイメージ画像

※注:インデックスは0から始まります。

substringを使った例

開始インデックスのみを指定する場合の例

・開始インデックスのみを指定する場合、指定したインデックスから文字列の最後までの部分文字列を返します。
・インデックスの範囲は0〜xで、xは文字列の長さを表します。
・結果の部分文字列にはインデックス位置の文字が含まれます
・開始位置がゼロより小さいか、指定された文字列の長さ(x)より大きい場合、IndexOutOfBoundsExceptionにスローされます。
・インデックス値X(文字列の長さ)を渡すと、空の文字列が返されます。

開始インデックスのみの部分文字列の例

出力結果

0123456789
123456789
89
9

開始インデックスと終了インデックスの両方を指定する場合の例

・開始インデックスと終了インデックスの両方を指定する場合、指定したインデックスから終了インデックスの位置までの部分を文字列を返します。
・インデックスの範囲は0〜xで、xは文字列の長さです。
・結果の文字列はインデックスの位置の文字を含みますが、終了インデックスの位置の文字は含みません。
・Indexがゼロより小さいか、指定された文字列の長さ(x)より大きい場合IndexOutOfBoundsException場合にスローされます。

・指定された文字列の長さ(x)より値が大きくないとエラーになりませんので注意してください。

・両方のパラメーターに同じインデックスを渡すと、空の文字列が返されます。

開始インデックスと終了インデックスの両方を指定する場合の例

出力結果

1234
123456789

5678
9

注意!この場合は例外にならない!

先ほども説明しましたが、指定された文字列の長さより値が大きくないとエラーになりませんので下記の例では例外になりませんので注意してください。

例外の場合の例

開始インデックスのみを指定する場合のエラーの例

出力結果

Exception in thread “main” java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.base/java.lang.String.substring(String.java:1876)
at Main.main(Main.java:7)

開始インデックスと終了インデックスの両方を指定する場合のエラーの例

出力結果

Exception in thread “main” java.lang.StringIndexOutOfBoundsException: begin 9, end 11, length 10
at java.base/java.lang.String.checkBoundsBeginEnd(String.java:3720)
at java.base/java.lang.String.substring(String.java:1909)
at Main.main(Main.java:7)

Writer
Ryotin

Ryotin

現役フリーランスエンジニアです。使ってるエージェントはフライテック!得意言語はJava。月収は75万円。SESのフリーランスではこれ以上稼ぐのは厳しそう...とはいってもサラリーマンの時より倍の収入だから家族も喜んでるけどね!

最新の案件情報

フリーランスエンジニアの案件探し