Javaで文字列を分割する
1. 前書き
Stringsの分割は、非常に頻繁な操作です。このクイックチュートリアルは、Javaでこれを行うために使用できるAPIの一部に焦点を当てています。
2. String.split()
コアライブラリから始めましょう–Stringクラス自体がsplit()メソッドを提供します–これは非常に便利で、ほとんどのシナリオで十分です。 区切り文字に基づいて指定されたStringを単純に分割し、Stringsの配列を返します。
いくつかの例を見てみましょう。 カンマで分割することから始めます。
String[] splitted = "peter,james,thomas".split(",");
空白で分割しましょう:
String[] splitted = "car jeep scooter".split(" ");
また、ドットで分割しましょう。
String[] splitted = "192.168.1.178".split("\\.")
次に、複数の文字(カンマ、スペース、および正規表現によるハイフン)で分割しましょう。
String[] splitted = "b a, e, l.d u, n g".split("\\s+|,\\s*|\\.\\s*"));
3. StringUtils.split()
Apacheの一般的なlangパッケージは、StringUtilsクラスを提供します。これにはnullセーフなsplit()メソッドが含まれ、デフォルトの区切り文字として空白を使用して分割されます。
String[] splitted = StringUtils.split("car jeep scooter");
さらに、余分なスペースは無視されます。
String[] splitted = StringUtils.split("car jeep scooter");
4. Splitter.split()
最後に、Guavaにも優れたSplitterの流暢なAPIがあります。
List resultList = Splitter.on(',')
.trimResults()
.omitEmptyStrings()
.splitToList("car,jeep,, scooter");
5. 分割とトリム
特定のStringに、区切り文字の前後に先頭、末尾、または余分なスペースが含まれている場合があります。 入力の分割と結果のトリミングを一度に処理する方法を見てみましょう。
これを入力として持っているとしましょう:
String input = " car , jeep, scooter ";
区切り文字の前後に余分なスペースを削除するには、正規表現を使用して分割とトリムを実行できます。
String[] splitted = input.trim().split("\\s*,\\s*");
ここで、trim()メソッドは入力文字列の先頭と末尾のスペースを削除し、正規表現自体が区切り文字の周りの余分なスペースを処理します。
Java 8Streamの機能を使用しても、同じ結果を得ることができます。
String[] splitted = Arrays.stream(input.split(","))
.map(String::trim)
.toArray(String[]::new);
6. 結論
通常、String.split()で十分です。 ただし、より複雑なケースでは、Apacheのcommons-langベースのStringUtilsクラス、またはクリーンで柔軟なGuavaAPIを利用できます。
そして、いつものように、記事のコードはover on GitHubで利用できます。