Javaのsubstring完全入門|インデックスで迷わない使い方と実務例
CONTENTS
substringとは?できることと使いどころ

Javaで文字列の一部だけを取り出したいとき、最も基本になるのが
String.substring() です。
substringは、元の文字列から指定した範囲を切り出し、新しいStringを返すメソッドです。
ログ解析、ID分解、ファイル名処理など、実務でも非常によく登場します。
substringでできること
- 固定フォーマット文字列の分解
- 区切り文字の前後を切り出す
- 末尾のチェックコード取得
- 日付・時刻文字列の分割
重要なのは、substringは元のStringを変更しないという点です。
Stringは不変(immutable)オブジェクトなので、結果は必ず新しいStringになります。
s 自体は "Java" のまま変わりません。
インデックスの基本|0始まり・endは含まれない
substringでつまずく最大の原因は、インデックスの考え方です。
0始まりのインデックス
Javaの文字列は配列と同じく 0始まり です。
| 文字 | J | a | v | a |
|---|---|---|---|---|
| index | 0 | 1 | 2 | 3 |
endIndexは「含まれない」
- beginIndex:1(a)
- endIndex:3(aの位置だが含まれない)
つまり [beginIndex, endIndex) の範囲です。
この仕様のおかげで、
- 文字列の長さ =
endIndex - beginIndex - 隣接する範囲を安全につなげられる
substringの基本的な書き方とコード例

substringには 2つの書き方があります。
substring(beginIndex)
開始位置から末尾まで切り出します。
- 区切りより「後ろ」を取りたいときに便利
- prefix除去などで頻出
substring(beginIndex, endIndex)
範囲を指定して切り出します。
ポイント:
- endIndexは「文字数」ではない
- begin == end → 空文字
""
1文字だけ取り出す場合
- 1文字なら
charAtが意図的に分かりやすい - Stringにしたい場合は
String.valueOf(c)
実務でよく使うsubstring活用パターン

右からn文字を切り出す
注意点:
n <= length()のチェック必須- 外部入力では例外対策を忘れない
indexOfと組み合わせる
indexOf → substring は鉄板パターンです。
ファイル名と拡張子を分ける
例外・null対策と代替手段の選び方
よくある例外
StringIndexOutOfBoundsExceptionNullPointerException
安全なチェック条件
substring以外の選択肢
| 目的 | おすすめ |
|---|---|
| 区切りで分割 | split |
| 複雑な抽出 | 正規表現 |
| 組み立て | StringBuilder |
substringは
「形式がある程度決まっている文字列」 に向いています。
学習を次に進めたい人へ(ZeroCodePlus)
substringのような基礎APIは、
「書いて・動かして・間違えて覚える」のが一番の近道です。
最近では 環境構築なしで、ブラウザ上ですぐJavaを触れる学習サービス
「ZeroCodePlus」 も登場しています。
- Progate感覚でぽちぽち進められる
- ローカル環境構築が不要
- substringやString操作も実際に手を動かして確認できる
「理解したつもり」を卒業したい方は、
実際にコードを書いて挙動を確かめてみるのがおすすめです。
まとめ

- substringは 0始まり・endは含まれない がすべて
- 固定フォーマットや境界切り出しに強い
- indexOfとの組み合わせが実務の定石
- 例外・null対策まで含めて設計する
String操作は地味ですが、
コードの品質と信頼性を大きく左右する基礎力です。
確実に使いこなせるよう、手を動かして身につけていきましょう!