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<String> 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 8 Stream 機能を使用しても、同じ結果を得ることができます。

String[] splitted = Arrays.stream(input.split(","))
  .map(String::trim)
  .toArray(String[]::new);

6. 結論

String.split()で通常は十分です。 ただし、より複雑なケースでは、Apacheのcommons-langベースの StringUtils クラス、またはクリーンで柔軟なGuavaAPIを利用できます。

そして、いつものように、記事のコードはGitHubから入手できます。