LoginSignup
13
9

More than 5 years have passed since last update.

String#split(String regex, int limit) 第二引数の動作仕様覚え書き

Last updated at Posted at 2018-09-18

javaで文字列をある特定の区切り文字で分割したいケースでよく使うsplitですが、第二引数の動作仕様を毎回忘れてしまうので備忘録としてメモします。

Java SE7, 8, 9でいづれも同じ動作仕様のようです。

String#split(String regex, int limit)の動き

入力文字列"あ,い,う,え,お,,"に対してカンマ文字を区切りで分割したい場合を考えます。

第二引数limit指定なしの場合

String data = "あ,い,う,え,お,,";
String[] splited = data.split(",");
for(int i=0; i<splited.length; i++) {
    System.out.println("[" + i + "]" + splited[i]);
}

実行結果は

[0]あ
[1]い
[2]う
[3]え
[4]お

⇒最後の空文字は無視されます。

第二引数limitに -1 を指定した場合

String data = "あ,い,う,え,お,,";
String[] splited = data.split(",", -1);

実行結果は

[0]あ
[1]い
[2]う
[3]え
[4]お
[5]
[6]

⇒最後の空文字も分割対象となります。

第二引数limitに 0 を指定した場合

String data = "あ,い,う,え,お,,";
String[] splited = data.split(",", 0);

実行結果は

[0]あ
[1]い
[2]う
[3]え
[4]お

⇒引数指定なしと同じ結果です(デフォルトのlimit値が0)。

第二引数limitに 1 を指定した場合

String data = "あ,い,う,え,お,,";
String[] splited = data.split(",", 1);

実行結果は

[0]あ,い,う,え,お,,

⇒1つに分割ということで分割されません。

第二引数limitに 2 を指定した場合

String data = "あ,い,う,え,お,,";
String[] splited = data.split(",", 2);

実行結果は

[0]あ
[1]い,う,え,お,,

⇒2つに分割されます。

第二引数limitに 3 を指定した場合

String data = "あ,い,う,え,お,,";
String[] splited = data.split(",", 3);

実行結果は

[0]あ
[1]い
[2]う,え,お,,

⇒3つに分割されます。

第二引数limitに 7 を指定した場合

String data = "あ,い,う,え,お,,";
String[] splited = data.split(",", 7);

実行結果は

[0]あ
[1]い
[2]う
[3]え
[4]お
[5]
[6]

⇒7つに分割されます。※空も分割対象

第二引数limitに 8以上 を指定した場合

String data = "あ,い,う,え,お,,";
String[] splited = data.split(",", 8);

実行結果は

[0]あ
[1]い
[2]う
[3]え
[4]お
[5]
[6]

⇒特にエラーなく7つに分割されます。

以上。

13
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
9