Бесплатный вебинар
«как найти любимую работу»
Подарки на 150 000 ₽ за участие
Живой эфир
Записи не будет!
00:00:00:00
дн.ч.мин.сек.

Разделение строки на равные подстроки в Java: методы и примеры

Быстрый ответ

Для разделения строки в Java на части одинакового размера можно использовать цикл for в сочетании с методом substring(). Вот пример кода, который разбивает строку str на фрагменты длиной n:

Java
Скопировать код
String str = "exampleString"; // наша образцовая строка
int n = 3;
List<String> chunks = new ArrayList<>();
for (int i = 0; i < str.length(); i += n) {
    chunks.add(str.substring(i, Math.min(str.length(), i + n)));
}

В результате в списке chunks получим подстроки длиной n символов каждая. При этом учитывается и последняя подстрока, которая может быть короче.

Кинга Идем в IT: пошаговый план для смены профессии

Анализ процесса

В Java существует множество способов разделения строк. Давайте посмотрим на инструменты, которые мы можем использовать для решения этой задачи.

Обсуждение regex и non-regex

Регулярные выражения обеспечивают быстрое разделение строк, например так:

Java
Скопировать код
String[] substrings = str.split("(?<=\\G.{" + n + "})"); // почти магия

Тем не менее, у них есть недостатки:

  • Сложность: Регулярные выражения увеличивают сложность кода, особенно при работе с подстроками разной длины.
  • Производительность: Нередко подходы без применения регулярных выражений бывают более эффективными и надёжными.
  • Совместимость: Некоторые платформы, включая Android, не поддерживают использование \G в регулярных выражениях.
  • Читаемость: Код без использования регулярных выражений значительно понятнее.
Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

Рассматриваемые библиотеки

Библиотека Guava от Google предоставляет удобные инструменты для работы со строками:

Java
Скопировать код
Iterable<String> chunks = Splitter.fixedLength(n).split(str);

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

Обход UTF-16

Если ваши строки содержат символы вне Базовой многоязычной плоскости (BMP), учтите, что Java кодирует их двумя символами char. Поэтому, разбивая строки, следует быть осторожными, чтобы не столкнуться с непредвиденными проблемами.

Обработка неожиданностей

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

Обработка крайних случаев

Вместо использования Math.ceil(), которое может привести к проблемам с вычислениями с плавающей точкой, вычислите количество подстрок вручную:

Java
Скопировать код
int numChunks = (str.length() + n – 1) / n;

Эффективное разделение на подстроки с переменной длиной

Если требуется получить подстроки разной длины, эффективнее будет организовать пользовательский цикл без использования сложных и неэффективных регулярных выражений.

Кэширование вашего splitter'а

Если регулярно требуется разделять строки, сохраните splitter в константу — это улучшит эффективность алгоритма и возможности для повторного использования. Отлично, если можно съесть кусок торта и сохранить его!

Избегайте ловушек регулярных выражений

Регулярные выражения могут быть полезными, но не всегда подходят для задач, требующих масштабности и кроссплатформенности.

Визуализация

Представьте процесс разделения строки. Как будто вы разрезаете её на равные части:

Markdown
Скопировать код
До разделения: |🍫🍫🍫🍫🍫🍫🍫🍫|

А после — получаете:

Markdown
Скопировать код
После разделения: |🍫🍫|🍫🍫|🍫🍫|🍫🍫|

В Java это будет выглядеть так:

Java
Скопировать код
"Chocolate".match(/.{1,2}/g); // "Ch", "oc", "ol", "at", "e"

Здесь каждая пара 🍫🍫 — это подстрока, а целая строка — это то, что было раньше, целый шоколадный батончик.

Полезные материалы

  1. String (Java Platform SE 8) — изучение класса String в Java.
  2. StringUtils (Apache Commons Lang 3.14.0 API) — инструментарий для работы со строками.
  3. Split string to equal length substrings in Java – Stack Overflow — обсуждение способов разделения строки на подстроки в сообществе.
  4. Split() String method in Java with examples – GeeksforGeeks — анализ метода split().
  5. Pattern (Java Platform SE 8 ) — обновите свои знания о регулярных выражениях.
  6. Substring in Java – javatpoint — подробнее о методе substring.
  7. Parse text – Java Practices — сжатый курс по разделению строк.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какой метод используется для разделения строки на равные подстроки в Java?
1 / 5
Свежие материалы
Видео уроки по C++
6 сентября 2024
Видео уроки по Java
6 сентября 2024