Index
split()メソッドとは?
オーバーロードされた2つのメソッドが存在していて、各メソッドについて公式のリファレンスでは以下のように説明されています。
1 2 3 |
public <a href="https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html">String</a>[] split(<a href="https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html">String</a> regex) この文字列を、指定された正規表現に一致する位置で分割します。 このメソッドの動作は、2つの引数を取るsplitメソッドを、指定された式および制限引数ゼロを指定して呼び出した場合と同じになります。つまり、結果として得られる配列には後続の空の文字列は含まれません |
1 2 3 |
public <a href="https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html">String</a>[] split(<a href="https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html">String</a> regex, int limit) この文字列の各部分文字列を含むメソッドにより返される配列は、指定された式に一致する別の部分文字列、またはその文字列の最後で終了します。配列内の部分文字列の順序は、この文字列内で出現する順序になります。入力されたどの部分とも式が一致しない場合、配列は1つの要素(つまり、この文字列)だけを保持します。 |
全文は公式のリファレンスを参照してください。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#split-java.lang.String-
サンプルコード
以下のようにフルーツの名前が与えられているとします。
1 |
String str = "Apple,Apricot,Orange,Cherry" |
このstrを,区切りで分割したいときに使うのがsplitメソッドです。
1 2 |
String[] split = str.split(","); //結果:split = ["Apple", "Apricot", "Orange", "Cherry"] |
以下のコードでも同じ結果が得られます。
1 |
String[] split = str.split(",",4);//配列の要素数を4に指定 |
要素数を少なめに設定すると以下のようになります。
1 2 |
String[] split = str.split(",",3);//配列の要素数を3に指定 //結果:split = ["Apple", "Apricot", "Orange,Cherry"] |
要素数を多めに設定すると配列数は4つになります。
1 2 |
String[] split = str.split(",",5);//配列の要素数を5に指定 //結果:split = ["Apple", "Apricot", "Orange","Cherry"] |
分割の際に注意する文字
以下の文字で分割する際はエスケープシーケンスを使う必要があります。
1 |
[]-.+*?()|^$ |
1 |
String[] split = str.split("¥¥."); |
要素数が決まっているときは、引数で指定する
もしあらかじめ分割後の要素数が決まっている場合は分割数を第二引数で指定しましょう。
無駄に分割処理をしなくて済みます。
例えばこんな感じ。
split()メソッドで分割した後の要素数の最大値が4であり、それ以上の場合はエラーで返したいとき。
1 |
String str = "Apple,Apricot,Orange,Cherry,Apple,Apricot,Orange,Cherry" |
1 2 3 4 5 |
final int MaxSize = 4; String[] split = str.split(",",MaxSize + 1);//配列の要素数を5に指定 if(split.length() > MaxSize + 1){ //エラー処理 } |
String配列ではなく、List<String>にしたいとき
以下のように書くとList<String>に変換できます。
1 |
Arrays.stream(str.split(",")).collect(Collectors.toList()); |