Научитесь разделять или токенизировать строку в массив. Разделение строки — очень распространенная задача, особенно при работе с веб-приложениями, когда нам нужно передавать данные в формате CSV или разделять их на основе какого-либо другого разделителя, например $, # или другого разделителя.
1. Использование простого Java
Метод String.split() — лучший и рекомендуемый способ разбить строки. Токены возвращаются в виде массива строк, что позволяет нам использовать его по своему усмотрению.
Следующая программа Java разделяет строку с разделителем-запятой. Это эквивалентно разделению CSV-файла.
String blogName = "как,что,сделать,на,java";String[] tokenArray = blogName.split(","); //["как", "чтобы", "сделать", "в", "java"]
Нам нужно изменить выражение регулярного выражения для любых дополнительных требований. Например, для игнорирования пробелов вокруг запятых мы можем использовать шаблон «\\s,\\s».
String[] tokenArray = blogName.split("\\s*,\\s*");
2. Использование сплиттера
String.split() — очень простой API для простого использования. Если мы хотим обработать токены после разделения, но перед выводом окончательного результата, класс Splitter — лучший вариант.
- Использование Splitter делает код более читаемым и пригодным для повторного использования. Мы создаем экземпляр Splitter и повторно используем его несколько раз, тем самым помогая достичь равномерного разделения логики во всем приложении.
- Еще одним преимуществом является то, что он также предоставил несколько полезных методов при построении самого разделителя, что устраняет большую часть последующей работы после создания токенов.
Мы можем напрямую включить Guava из репозитория Maven.
<зависимость><groupId>com.google.guava</groupId><artifactId>гуава</artifactId><версия>17.0</версия></зависимость>
Мы можем создать экземпляр Splitter простым способом:
Splitter niceCommaSplitter = Splitter.on(',').omitEmptyStrings().trimResults();
И теперь используйте его в любом месте кода, как вам нравится. Обратите внимание, что у нас есть запятые дважды. Splitter хорошо с этим справляется и не включает пустой токен.
Разделитель niceCommaSplitter = Разделитель.on(',').omitEmptyStrings().trimResults();Iterable tokensList = niceCommaSplitter.split("как,сделать,в,java, ,java");tokensList.forEach(System.out::println); //"как", "чтобы", "сделать", "в", "java"
3. Использование StringUtils.split()
Класс StringUtils Apache Commons Lang предоставляет множество полезных методов для выполнения общих операций со строками, таких как поиск, замена, обратный или проверка на пустоту. Все операции являются null-безопасными.
StringUtils .split() очень похож на подход выше и также возвращает вывод массива String. Единственное преимущество в том, что код быстрее.
Начните с включения последней версии зависимости common-lang3.
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version></dependency>
Конструктор для инициализации StringUtils принимает следующие параметры:
split(Строка_строка, Разделитель_строки_символов, максимальное_число_целых)
- str – строка для анализа, может быть нулевой.
- SeparaterChars(Необязательно) – символы, используемые в качестве разделителей. Значение по умолчанию – пробел.
- max(Необязательно) – максимальное количество элементов для включения в массив. Нулевое или отрицательное значение не подразумевает ограничений.
Следующая программа Java, использующая StringUtils, разбивает строку по пробелам-разделителям.
String[] токены = StringUtils.split("как сделать в java");Assertions.assertArrayEquals(new String[]{"как", "чтобы", "сделать", "в", "java"}, токены);