Java Метод split() для рядків з прикладом

⚡ Розумний підсумок

Розділити рядок Java за допомогою методу split(), який розбиває текст скрізь, де збігається роздільник, і повертає частини як масив String. Необов'язковий аргумент limit обмежує кількість створених частин, залишаючи решту недоторканою.

  • 🧩 Тип повернення: split() повертає String[], ніколи не окремий рядок, тому результат має бути присвоєно масиву.
  • 🔤 Роздільник – це регулярний вираз: Аргументом є регулярний вираз, тому для таких символів, як крапка та вертикальна риски, потрібен esc.ping.
  • 🔢 Аргумент обмеження: Перевищення ліміту в 3 призводить до двох розділених частин, а решта тексту залишається як останній елемент.
  • ␣ Шаблон пробілу: Шаблон \\s відповідає будь-якому окремому пробілу, який розбиває речення на слова.
  • 🕳️ Залишкові прогалини: Порожні кінцеві поля відкидаються, якщо не вказано від'ємне значення.
  • 🔁 Результати читання: Стандартний цикл for для довжини масиву друкує кожен елемент по порядку.

Java Метод String split().

Що містить рядок split(). Java?

Команда split() метод дозволяє розірвати рядок на основі конкретного Java роздільник рядка. Найчастіше роздільником є ​​пробіл або кома (,), на якій потрібно розірвати рядок.

синтаксис функції split().

public String[] split(String regex)
public String[] split(String regex, int limit)

⚠️ Примітка щодо типу повернення: split() повертає String[] масив, жодного StringПрисвоєння результату рівнині String Змінна не компілюється з помилкою несумісних типів, що є найчастішою помилкою, яку роблять новачки з цим методом.

Параметр

  • Регулярний вираз: регулярний вираз, застосований до тексту або рядка.
  • Ліміт: максимальна кількість значень у результуючому масиві. Якщо вона пропущена або дорівнює нулю, повертається кожен підрядок, що відповідає регулярному виразу.

Як розділити рядок Java з роздільником

У наведеному нижче прикладі показано, як розділити рядок на Java з роздільником.

Припустимо, у нас є рядкова змінна з іменем strMain утворений з кількох слів — Альфа, Бета, Гамма, Delta, Sigma — усі символи розділені комою (,).

 Розділити рядок Java

Тут, якщо нам потрібні всі окремі рядки, найкращим можливим шаблоном було б розділити їх на основі коми. Отже, ми отримаємо п’ять окремих рядків, як показано нижче:

  • Альфа
  • бета
  • Гамма
  • Delta
  • Сигма

Використовуйте рядок розкол метод в Java проти рядка, який потрібно розділити, та вкажіть роздільник як аргумент.

В цьому Java розділити рядок на регістр роздільників, роздільником є ​​кома (,) і результат Java розділити рядок за допомогою коми дасть вам розділення масиву.

class StrSplit{
  public static void main(String []args){
   String strMain = "Alpha, Beta, Delta, Gamma, Sigma";
    String[] arrSplit = strMain.split(", ");
    for (int i=0; i < arrSplit.length; i++)
    {
      System.out.println(arrSplit[i]);
    }
  }
}

Цикл у коді просто друкує кожен Java розділити рядок з масиву після функції split у Java, як показано нижче.

Очікуваний результат:

Alpha
Beta
Delta
Gamma
Sigma

приклад: Java Метод String split() із регулярним виразом і довжиною

Розглянемо ситуацію, коли вам потрібні лише перші 'n' елементів після функції split у Java, але хочуть, щоб решта рядка залишилася як є. Вивід приблизно такий:

  1. Альфа
  2. бета
  3. Delta, Гамма, Сигма

Цього можна досягти, передавши ще один аргумент разом з операцією split() у Java, і це буде ліміт необхідних рядків.

Розглянемо наступний код методу split у Java:

class StrSplit2{
  public static void main(String []args){
   String strMain = "Alpha, Beta, Delta, Gamma, Sigma";
    String[] arrSplit_2 = strMain.split(", ", 3);
    for (int i=0; i < arrSplit_2.length; i++){
      System.out.println(arrSplit_2[i]);
    }
  }
}

Очікуваний результат:

Alpha
Beta
Delta, Gamma, Sigma

Зверніть увагу, що обмеження 3 дає рівно три елементи: перші два роздільники враховуються, а все, що знаходиться після другого роздільника, зберігається разом як третій елемент.

Як розділити рядок Java по простору

Розглянемо ситуацію, коли вам потрібно розділити рядок пробілами. Тут у нас є розділений рядок Java змінна названий strMain утворений з кількох слів: Ласкаво просимо до клініки Guru99.

public class StrSplit3{
public static void main(String args[]){
String strMain = "Welcome to Guru99";
String[] arrSplit_3 = strMain.split("\\s");
    for (int i=0; i < arrSplit_3.length; i++){
      System.out.println(arrSplit_3[i]);
    }
  }
}

Очікуваний результат:

Welcome
to
Guru99

Шаблон \\s збігається з одним пробілом. Використовуйте \\s+ натомість, коли слова можуть бути розділені більш ніж одним пробілом, інакше кожен додатковий пробіл створює порожній елемент.

Як зберегти порожні рядки під час розділення Java

Одна з моделей поведінки split() дивує майже кожного, коли він вперше зустрічається з ним: порожні рядки, що залишаються після розщеплення, безшумно відкидаються. "a,b,," після коми повертає два елементи, а не чотири, оскільки обмеження за замовчуванням, рівне нулю, відкидає кожне порожнє поле в кінці масиву.

Це важливо, коли дані є позиційними — наприклад, рядок CSV, де відсутнє значення в кінці все ще займає стовпець. Втрата цих пробілів зміщує кожен наступний індекс.

Проходження а негативний обмеження їх утримує:

String row = "Alpha,Beta,,";

// Default: trailing empty fields removed -> length 2
String[] a = row.split(",");
System.out.println(a.length);        // prints 2

// Negative limit: every field preserved -> length 4
String[] b = row.split(",", -1);
System.out.println(b.length);        // prints 4

Три правила охоплюють кожен випадок. Ліміт нуль, що є значенням за замовчуванням, застосовує шаблон стільки разів, скільки можливо, а потім видаляє порожні рядки, що завершуються. A позитивний ліміт застосовує шаблон не більше одного разу, тому останній елемент містить недоторканий залишок, точно так само, як показано в попередньому прикладі з лімітом 3. A негативний Функція limit застосовує шаблон якомога більше разів і зберігає кожне порожнє поле, включаючи завершальні.

Початкові порожні рядки знову поводяться інакше: розщеплення ",a,b" завжди повертає порожній перший елемент незалежно від обмеження, оскільки шаблон збігається в нульовій позиції. Захистіть себе від цього, обрізаючи вхідні дані або фільтруючи результуючий елемент. масив перед використанням.

split() проти StringTokenizer проти Pattern.split(): що використовувати

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

Аспект String.split() StringTokenizer Pattern.split()
Delimiter Регулярне вираження Набір окремих символів Регулярне вираження
Повернення Рядок [] Токени через перерахування Рядок []
Шаблон складено На кожному дзвінку Не підтримується Один раз, потім використано повторно
Зберігає порожні поля Тільки з негативною межею Ніколи Тільки з негативною межею
Статус Рекомендовані Застаріле, збережено для сумісності Рекомендовано в циклах

Скористайтеся кнопкою String.split() для звичайної разової роботи, оскільки це найкоротший текст для написання та зрозуміло читається. Попередньо скомпілюйте з Pattern.compile(",").split(text) під час розділення всередині циклу, оскільки регулярний вираз компілюється один раз, а не на кожній ітерації. Уникайте StringTokenizer у новому коді; він залишається лише для зворотної сумісності.

загальний Java Помилки split() та як їх виправити

Майже кожна проблема з split() tracповертається до однієї з двох причин: аргумент є регулярним виразом, а не літеральним рядком, або описані вище правила обмеження несподівано відкидають поля. Кожна помилка нижче містить свій симптом та спосіб виправлення.

  • Розділення по крапці повертає порожній масив: "1.2.3".split(".") збігається з усіма символами, оскільки крапка є шаблоном регулярного виразу. Використовуйте екран як split("\\.").
  • Розщеплення на трубі поводиться дивно: Вертикальна риса означає чергування у регулярному виразі. Екрануйте її як split("\\|").
  • Помилка несумісних типів: результат було призначено StringОголосіть змінну як String[].
  • Неочікувано порожній перший елемент: Роздільник з'являється на початку вхідних даних. Спочатку обріжте рядок.
  • Відсутні значення в кінці: Залишкові порожні поля відкидалися через обмеження за замовчуванням. Пропустити -1 як другий аргумент.
  • Виняток NullPointer: split() було викликано для null-посилання. Перевірте наявність null-посилання перед розділенням, оскільки метод не може його обробити.

Поширені запитання

Використовуйте клас символів, як у split("[,;]"), що розривається або комою, або крапкою з комою. Також працює чергування: split(",|;").

Так. Обгорніть масив за допомогою Arrays.asList(text.split(",")) для перегляду фіксованого розміру або new ArrayList<>(Arrays.asList(...)) коли список потрібно буде змінити згодом.

Так. AI Інструменти створюють робочий шаблон з описаного формату та пояснюють кожен токен. Перевірте результат на граничних випадках, таких як порожні поля та значення в лапках, перш ніж довіряти йому.

Помічники штучного інтелекту визначають, чи є причиною неекранований метасимвол, відкинуте завершальне поле чи початковий роздільник, що є трьома поясненнями неочікуваної довжини масиву.

Тільки для простих даних. Він не може обробляти коми всередині полів у лапках або вбудовані розриви рядків, тому спеціальна бібліотека CSV безпечніша для реальних файлів. Читання їх рядок за рядком за допомогою BufferedReader добре поєднується з такою бібліотекою.

Підсумуйте цей пост за допомогою: