Java でカンマやスペースなどで区切られた文字列を配列に変換するときは、String クラスの split() を使用します。ここでは、split() の使い方について説明します。
split() の使い方
split() の構文は以下の通りです。
1 |
対象の文字列.split(正規表現, 最大適用回数) |
split() は対象の文字列を第1引数で指定した区切り文字の正規表現パターンで分割し、戻り値として配列を返します。このとき、第2引数で指定した回数の -1 回だけ分割を行います。たとえば、第2引数に 2 を指定した場合は、1回だけ分割を行います。
もし第2引数に 0 を指定した場合はすべての区切り文字に対して分割を行い、後方が空文字で区切られているときは、自動的に要素から除外してくれます。第2引数は省略することも可能です。そのときは 0 を指定したときと同じ動作になります。
また、第2引数に負数を指定した場合はすべての区切り文字に対して分割が行われます。
文字列を分割する
以下は split() を使用したサンプルです。
1 2 |
String str = "Anna,Ken,Mike.John"; String[] data = str.split(","); // [Anna, Ken, Mike] |
上のプログラムではカンマ文字 , で文字列を分割しています。
分割回数を指定する
次は、適用回数を指定した場合の例です。
1 2 |
String str = "Anna,Ken,Mike,John"; String[] data = str.split(",", 2); // [Anna, Ken, Mike, John] |
この場合は、第2引数に 2 を指定してあるため 1 回しか 分割が行われません。そのため、結果の配列の要素は 2 個となり、 2個目の要素は "Ken, Mike, John" という文字列になります。
末尾の空白文字の要素を除外する
もし末尾に空白文字の要素があった場合は、 第2引数に 0 を指定することで除外することができます。
1 2 |
String str = "Anna,Ken,Mike,John,,,"; String[] data = str.split(",", 0); // [Anna, Ken, Mike, John] |
この場合は、要素数が 4 個の配列になります。
間の空白文字を除外する
もし区切り文字の前後に空白文字があった場合は、その空白文字も要素に含まれてしまいます。もし空白文字を除外したい場合は、以下のように第1引数に正規表現を指定すれば実現できます。
1 2 |
String str = "Anna , Ken, Mike , John"; String[] data = str.split("[\\s]*,[\\s]*"); // [Anna, Ken, Mike, John] |