Перейти к основному содержимому

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

· 2 мин. чтения

1. Введение

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

2. Строка.split()

Начнем с основной библиотеки — сам класс 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()

Пакет common lang Apache предоставляет класс StringUtils , который содержит нулевой безопасный метод split() , который разбивается с использованием пробела в качестве разделителя по умолчанию:

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

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

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

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

Наконец, в Guava также есть хороший API-интерфейс Splitter :

List<String> 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 на основе commons-lang или чистые и гибкие API-интерфейсы Guava.

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