MEDIA

メディア

  1. TOP
  2. メディア
  3. プログラミング
  4. Javaのsubstring完全入門|インデックスで迷わない使い方と実務例

Javaのsubstring完全入門|インデックスで迷わない使い方と実務例

substringとは?できることと使いどころ

Javaで文字列の一部だけを取り出したいとき、最も基本になるのが

String.substring() です。

substringは、元の文字列から指定した範囲を切り出し、新しいStringを返すメソッドです。

ログ解析、ID分解、ファイル名処理など、実務でも非常によく登場します。

substringでできること

  • 固定フォーマット文字列の分解
  • 区切り文字の前後を切り出す
  • 末尾のチェックコード取得
  • 日付・時刻文字列の分割

重要なのは、substringは元のStringを変更しないという点です。

Stringは不変(immutable)オブジェクトなので、結果は必ず新しいStringになります。

String s = "Java";
String sub = s.substring(1,3); // "av"

s 自体は "Java" のまま変わりません。

String型についてはこちらもご参考ください!

インデックスの基本|0始まり・endは含まれない

substringでつまずく最大の原因は、インデックスの考え方です。

0始まりのインデックス

Javaの文字列は配列と同じく 0始まり です。

文字 J a v a
index 0 1 2 3

endIndexは「含まれない」

String s = "Java";
s.substring(1,3); // "av"
  • beginIndex:1(a)
  • endIndex:3(aの位置だが含まれない)

つまり [beginIndex, endIndex) の範囲です。

この仕様のおかげで、

  • 文字列の長さ = endIndex - beginIndex
  • 隣接する範囲を安全につなげられる

というメリットがあります。

substringの基本的な書き方とコード例

substringには 2つの書き方があります。

substring(beginIndex)

開始位置から末尾まで切り出します。

String s = "ID:12345";
String value = s.substring(3); // "12345"
  • 区切りより「後ろ」を取りたいときに便利
  • prefix除去などで頻出

substring(beginIndex, endIndex)

範囲を指定して切り出します。

String s = "abcdef";
String part = s.substring(1,4); // "bcd"

ポイント:

  • endIndexは「文字数」ではない
  • begin == end → 空文字 ""

1文字だけ取り出す場合

char c = s.charAt(Z);
  • 1文字なら charAt が意図的に分かりやすい
  • Stringにしたい場合は String.valueOf(c)

実務でよく使うsubstring活用パターン

右からn文字を切り出す

String s = "ABCDE1234";
String last4 = s.substring(s.length() - 4); // "1234"

注意点:

  • n <= length() のチェック必須
  • 外部入力では例外対策を忘れない

indexOfと組み合わせる

String s = "key = value";

int idx = s.indexOf("=");

if (idx != -1) {
String value = s.substring(idx + 1);
}

indexOf → substring は鉄板パターンです。

Indexについてはぜひこちらの記事もご参考ください!

ファイル名と拡張子を分ける

String name = "sample.txt";

int dot = name.lastIndexOf(".");

if (dot != -1) {
 String base = name.substring(0, dot);
 String ext = name.substring(dot + 1);
}

例外・null対策と代替手段の選び方

よくある例外

  • StringIndexOutOfBoundsException
  • NullPointerException

安全なチェック条件

if (s != null && begin >= 0 && end <= s.length() && begin <= end) {
 s.substring(begin, end);
}

substring以外の選択肢

目的 おすすめ
区切りで分割 split
複雑な抽出 正規表現
組み立て StringBuilder

substringは

「形式がある程度決まっている文字列」 に向いています。

学習を次に進めたい人へ(ZeroCodePlus)

substringのような基礎APIは、

「書いて・動かして・間違えて覚える」のが一番の近道です。

最近では 環境構築なしで、ブラウザ上ですぐJavaを触れる学習サービス

「ZeroCodePlus」
も登場しています。

  • Progate感覚でぽちぽち進められる
  • ローカル環境構築が不要
  • substringやString操作も実際に手を動かして確認できる

「理解したつもり」を卒業したい方は、

実際にコードを書いて挙動を確かめてみるのがおすすめです。

👉 ZeroCodePlusはこちら

まとめ

  • substringは 0始まり・endは含まれない がすべて
  • 固定フォーマットや境界切り出しに強い
  • indexOfとの組み合わせが実務の定石
  • 例外・null対策まで含めて設計する

String操作は地味ですが、

コードの品質と信頼性を大きく左右する基礎力です。

確実に使いこなせるよう、手を動かして身につけていきましょう!

Join us! 未経験からエンジニアに挑戦できる環境で自分の可能性を信じてみよう 採用ページを見る→

記事監修

ドライブライン編集部

[ この記事をシェアする ]

記事一覧へ戻る