Java substringを使って文字列の一部を取得する方法 - Stringクラス
Javaでsubstringを使って文字列の一部を取得する方法です。
Javaで文字列から一部分を取り出すためには substring
を利用します。取得部分の指定はインデックス番号で指定します。文字列が null
の場合には、NullPointerException
が発生しますので注意が必要です。
ここでは Javaでsubstringを使って文字列の一部を取得する方法を解説 します。
Sponsored Links
目次
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 より大きい場合
Sponsored Links
インデックスって?
インデックスとは下記のようなイメージと思ってください。インデックスは、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));
Sponsored Links
結果を確認する
結果はこうなります。
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; }
ふむ、いい感じ^^
Sponsored Links
まとめ
Javaでsubstringを使って文字列の一部を取得する方法をサンプルソースで解説しました。
文字列操作は、実務では本当によく利用します。基本をきっちり抑えておきましょうね。
他にも「左から右から指定された文字数を取得する方法」なんかもあります。気になる方は読んでみてください。おつかれさまでした。
Sponsored Links