Java substringを使って文字列の一部を取得する方法 - Stringクラス
Javaでsubstringを使って文字列の一部を取得する方法です。
Javaで文字列から一部分を取り出すためには substring
を利用します。取得部分の指定はインデックス番号で指定します。文字列が null
の場合には、NullPointerException
が発生しますので注意が必要です。
ここでは Javaでsubstringを使って文字列の一部を取得する方法を解説 します。
目次
Java substringの仕様
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 つずつ増加します。
サンプルソースとテスト
ではサンプルコードを書いてテストしてみましょう。
- "saka-en"という文字列から "ka" を取得する。
- "サカエン"という文字列から "カ" を取得する。
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でsubstringを使って文字列の一部を取得する方法をサンプルソースで解説しました。
文字列操作は、実務では本当によく利用します。基本をきっちり抑えておきましょうね。
他にも「左から右から指定された文字数を取得する方法」なんかもあります。気になる方は読んでみてください。おつかれさまでした。