Javaのsubstring完全入門|インデックスで迷わない使い方と実務例
CONTENTS
文字列とインデックスの基本イメージ!
substringでつまずく原因の多くは、
文字列とインデックスの理解不足です。
まずはイメージを整理しましょう。
文字列は「配列のように扱う」
Javaの文字列は、以下のように考えます。
"Java"
| 文字 | J | a | v | a |
|---|---|---|---|---|
| index | 0 | 1 | 2 | 3 |
👉 インデックスは0から始まる
範囲指定は「終わりを含まない」
String s = "Java";
s.substring(1, 3);
結果:
"av"
なぜ?
- 開始:1(a)
- 終了:3(含まない)
👉 [開始, 終了) の半開区間
このルールのメリット
- 長さ = end - begin
- 範囲をつなげやすい
- バグが起きにくい
👉 実務でも重要な考え方
このイメージを理解すると、substringで迷うことがなくなります!
substringとは?できることと使いどころ

Javaで文字列の一部だけを取り出したいとき、最も基本になるのが
String.substring() です。
substringは、元の文字列から指定した範囲を切り出し、新しいStringを返すメソッドです。
ログ解析、ID分解、ファイル名処理など、実務でも非常によく登場します。
substringでできること
- 固定フォーマット文字列の分解
- 区切り文字の前後を切り出す
- 末尾のチェックコード取得
- 日付・時刻文字列の分割
重要なのは、substringは元のStringを変更しないという点です。
Stringは不変(immutable)オブジェクトなので、結果は必ず新しいStringになります。
s 自体は "Java" のまま変わりません。
substringの基本的な書き方とコード例

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

右からn文字を切り出す
注意点:
n <= length()のチェック必須- 外部入力では例外対策を忘れない
indexOfと組み合わせる
indexOf → substring は鉄板パターンです。
ファイル名と拡張子を分ける
例外・null対策と代替手段の選び方
よくある例外
StringIndexOutOfBoundsExceptionNullPointerException
安全なチェック条件
substring以外の選択肢
| 目的 | おすすめ |
|---|---|
| 区切りで分割 | split |
| 複雑な抽出 | 正規表現 |
| 組み立て | StringBuilder |
substringは
「形式がある程度決まっている文字列」 に向いています。
独学でつまずきやすいポイント
よくある悩みです。
- インデックスが混乱する
- 例外が頻発する
- 実務での使い方が分からない
👉 理解だけでは不十分です
ZeroCodePLUSで理解を実践に変える
- 環境構築不要
- ブラウザですぐ実行
- 手を動かして学べる
まとめ

- 固定フォーマットや境界切り出しに強い
- indexOfとの組み合わせが実務の定石
- 例外・null対策まで含めて設計する
String操作は地味ですが、
コードの品質と信頼性を大きく左右する基礎力です。
👉 ZeroCodePLUSなら「理解→実践→定着」を最短で回せます
まずは手を動かしてみましょう!