java substringを使って文字列の一部を取得する - Stringクラス ホームページ制作 | 墨田区

java substringを使って文字列の一部を取得する – Stringクラス

LINEで送る
Pocket

Java で文字列から一部分を取り出すためには substring を利用します。
取得部分の指定はインデックス番号で指定します。
文字列が null の場合には、NullPointerException が発生しますので注意が必要です。




【PR】マジか?!「アレ」してるLINEスタンプっていったい・・・


API ドキュメントには以下のように記載があります。

API ドキュメント
substring
public String substring(int beginIndex,int endIndex)

この文字列の部分文字列である新しい文字列を返します。
部分文字列は、指定された beginIndex から始まり、インデックス endIndex - 1 にある文字までです。
したがって、部分文字列の長さは endIndex-beginIndex になります。 
例: 
 "hamburger".substring(4, 8) returns "urge"
 "smiles".substring(1, 5) returns "mile"
パラメータ:
 beginIndex - 開始インデックス (この値を含む)
 endIndex - 終了インデックス (この値を含まない)
戻り値:
 指定された部分文字列
例外:
 IndexOutOfBoundsException - beginIndex が負の値である場合、endIndex がこの String オブジェクトの長さより大きい場合、あるいは beginIndex が endIndex より大きい場合

インデックスって?

インデックスとは下記のようなイメージと思ってください。
インデックスは、0 から始まります。


“saka-en”という文字列のインデックス

  • インデックス 0 ⇒ s
  • インデックス 1 ⇒ a
  • インデックス 2 ⇒ k
  • インデックス 3 ⇒ a
  • インデックス 4 ⇒
  • インデックス 5 ⇒ e
  • インデックス 6 ⇒ n

“サカエン”という文字列のインデックス

  • インデックス 0 ⇒
  • インデックス 1 ⇒
  • インデックス 2 ⇒
  • インデックス 3 ⇒

インデックスは「半角文字」であっても「全角文字」であっても、
1 文字に対して 1 つずつ増加します。


サンプルソースとテスト

では、早速サンプルでテストしてみましょう。

  1. “saka-en”という文字列から、”ka”を取得する。
  2. “サカエン”という文字列から、”カ”を取得する。
System.out.println("saka-en".substring(2,3));
System.out.println("サカエン".substring(1,2));

結果

結果はこうなります。

k
カ

しかし、値が必ず保障されている場合はいいのですが、別のメソッドを呼び出しし、
null が戻るケースがある場合は、注意が必要です。
NullPointerException が発生します。

例えばこんなケースです。

public static void main(String[] args) {
    String substr = substr();
    System.out.println(substr.substring(1,2));
}
private static String substr() {
    return null;
}

これは極端な例ですが、可能性がある場合は注意が必要です。

NullPointerException を回避するために、StringUtils などのユーティリティクラスを用意し、その中にこんな感じのメソッドを用意するとよいでしょう。

/**
 * この文字列の部分文字列である新しい文字列を返します。<br />
 * 対象文字列が null の場合は、空文字列を返します。
 *
 * @param value 対象文字列
 * @param beginIndex 開始インデックス (この値を含む)
 * @param endIndex 終了インデックス (この値を含まない)
 * @return 指定された部分文字列
 */
private static String substring(String value, int beginIndex, int endIndex) {
	if ( value != null )
		return value.substring(beginIndex, endIndex);
	else
		return "";
}

対象文字列が null の場合は、空文字列を返します。
これにより、NullPointerException を回避できます。
先ほどのソースを直すとこんな感じになります。

public static void main(String[] args) {
    String substr = substr();
    System.out.println(StringUtils.substring(substr,1,2));
}
private static String substr() {
    return null;
}

こちらのページでは、左から指定された文字数を取得したり、右から指定された文字数を取得したりする方法をご紹介しています。合わせてお読みください。
>Java 左から右から指定された文字数を取得する方法 – クラス String


文字列操作は、実務では本当によく利用します。
基本をきっちり抑えておきましょう。

おつかれさまでした。

LINEで送る
Pocket

この記事がお役に立ちましたら シェア をお願いいたします。

コメントを残す

コメント(必須)

お名前 (必須)
メールアドレス
(アドレスは公開されません)

Trackback URL