Рубрики
Без рубрики

Разделите строку в Java

В статье обсуждается несколько альтернатив разделения строки в Java.

Автор оригинала: baeldung.

1. введение

Разделение Строк – очень частая операция; этот краткий учебник посвящен некоторым API, которые мы можем использовать для этого просто в Java.

2. Строка.разделение()

Давайте начнем с основной библиотеки – сам класс String предлагает метод split () , который очень удобен и достаточен для большинства сценариев. Он просто разбивает заданную строку на основе разделителя, возвращая массив Строк .

Давайте рассмотрим несколько примеров. Мы начнем с разделения запятой:

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 предоставляет класс StringUtils , который содержит безопасный для нуля split() метод, который разбивается с использованием пробелов в качестве разделителя по умолчанию:

String[] splitted = StringUtils.split("car jeep scooter");

Кроме того, он игнорирует дополнительные пробелы:

String[] splitted = StringUtils.split("car   jeep  scooter");

4. Разделитель.разделение()

Наконец, в Гуаве также есть хороший Splitter fluent API:

List resultList = Splitter.on(',')
  .trimResults()
  .omitEmptyStrings()
  .splitToList("car,jeep,, scooter");

5. Раскол и обрезка

Иногда данная строка содержит некоторые начальные, конечные или дополнительные пробелы вокруг разделителя. Давайте посмотрим, как мы можем обрабатывать разделение входных данных и обрезку результатов за один раз.

Допустим, у нас есть это в качестве входных данных:

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() обычно достаточно. Однако для более сложных случаев мы можем использовать класс StringUtils на основе общего языка Apache или чистые и гибкие API Guava.

И, как всегда, код для статьи доступен на GitHub .