Java разбиение строки регулярным выражением

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

Примеры разделения строки Java, как разделить строку с помощью тире, точки, новой строки, пробелов, регулярных выражений, специальных символов и потока Java 8.

В Java мы можем использовать String#split для разделения строки. split() принимает регулярное выражение в качестве аргумента, что означает, что мы можем разделить строку с помощью шаблона регулярного выражения.

public String[] split(String regex)

  1. Разделить строку
  2. Разделить строку по ограничению
  3. Разделение строки специальными символами регулярного выражения
  4. Разделите строку несколькими разделителями
  5. Разделите строку и Java 8
  6. Разделить строку пробелами
  7. Разделить строку на новую строку
  8. СтрокоКенизатор (устаревший)

1. Разделить строку

Ниже приведен пример разделения строки с помощью тире — .

package com.mkyong; public class SplitString < public static void main(String[] args) < String phone = "299-399-4999"; String[] output = phone.split("-"); System.out.println(output.length); // 3 for (String s : output) < System.out.println(s); >/* System.out.println(output[0]); // 299 System.out.println(output[1]); // 399 System.out.println(output[2]); // 4999 */ > >

2. Разделить строку по ограничению

split() также поддерживает второй аргумент limit , который управляет длиной возвращаемого массива. Длина массива не будет превышать предел , а последняя запись массива содержит оставшиеся входные данные после последнего совпадающего разделителя.

package com.mkyong; public class SplitString2 < public static void main(String[] args) < String phone = "299-399-4999"; String[] output = phone.split("-", 2); System.out.println(output.length); // 2 for (String s : output) < System.out.println(s); >//System.out.println(output[0]); // 299 //System.out.println(output[1]); // 399-4999 > >

3. Разделите строку специальными символами регулярного выражения.

3.1 split() принимает регулярное выражение в качестве аргумента, и в регулярном выражении 12 специальных символов имеют особое значение:

  1. Точка или точка .
  2. Знак плюс +
  3. Звездочка или звезда *
  4. Знак вопроса ?
  5. Каретка ^
  6. Знак доллара $
  7. Открывающая и закрывающая скобки ( и )
  8. Открывающая квадратная скобка [
  9. Открывающая фигурная скобка
  10. Символ трубы |
  11. Обратная косая черта \

P.S Обе закрывающие квадратные скобки ] и закрывающая фигурная скобка > это обычный персонаж, не нужно убегать.

3.2 Если мы хотим использовать любой из вышеперечисленных специальных символов в качестве разделителя, мы должны избежать его. Например, если мы хотим разделить строку вертикальной чертой или символом трубы | (специальный символ регулярного выражения), что означает или в регулярном выражении, мы должны избежать символа |, используя один из следующих способов:

str.split("\\|") // backslash \ to escape regex special character str.split("[|]") // character class [] to escape regex special character str.split(Pattern.quote("|")) // Pattern#quote() to escape regex special character

3.3 Полный пример разделения строки символом /.

package com.mkyong; import java.util.regex.Pattern; public class SplitString31 < public static void main(String[] args) < String csv = "a|b|c|d"; //String[] output = csv.split("\\|"); //String[] output = csv.split("[|]"); String[] output = csv.split(Pattern.quote("|")); System.out.println(output.length); for (String s : output) < System.out.println(s); >> >

3.4 Полный пример разделения строки символом обратной косой черты \ .

package com.mkyong; import java.util.regex.Pattern; public class SplitString32 < public static void main(String[] args) < String dir = "C:\\Users\\mkyong\\projects\\mkyong-tutorials"; //String[] output = dir.split("\\\\"); //String[] output = dir.split("[\\\\]"); String[] output = dir.split(Pattern.quote("\\")); System.out.println(output.length); for (String s : output) < System.out.println(s); >> >
5 C: Users mkyong projects mkyong-tutorials

4. Разделите строку несколькими разделителями

Если мы хотим разделить строку на несколько разделителей, просто заключите все разделители в квадратные скобки [ ] .

package com.mkyong; public class SplitString4 < public static void main(String[] args) < String dir = "apple|9|1.88;2.78|0#10"; String[] output = dir.split("[|;#]"); System.out.println(output.length); // 6 for (String s : output) < System.out.println(s); >/* System.out.println(output[0]); // apple System.out.println(output[1]); // 9 System.out.println(output[2]); // 1.88 System.out.println(output[3]); // 2.78 System.out.println(output[4]); // 0 System.out.println(output[5]); // 10 */ > >

5. Разделите строку и Java 8

5.1 Для потока Java 8 мы можем использовать .Разделенный поток чтобы разделить строку.

package com.mkyong; import java.util.List; import java.util.regex.Pattern; import java.util.stream.Collectors; public class SplitString5a < public static void main(String[] args) < String phone = "299-399-4999"; Listoutput = Pattern.compile("-") .splitAsStream(phone) .filter(x -> !x.equals("399")) .collect(Collectors.toList()); output.forEach(s -> System.out.println(s)); > > 

5.2 Мы также можем использовать Arrays.stream для преобразования массива в поток.

package com.mkyong; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class SplitString5b < public static void main(String[] args) < String phone = "299-399-4999"; Listoutput = Arrays.stream(phone.split("-")) .filter(x -> !x.equals(399)) .collect(Collectors.toList()); output.forEach(s -> System.out.println(s)); > > 

6. Разделите строку пробелом или несколькими пробелами

Мы можем использовать \\s+ (один или несколько пробелов) для разделения строки пробелами.

package com.mkyong; public class SplitString6 < public static void main(String[] args) < String str = "1 2 3 4 5"; String[] output = str.split("\\s+"); for (String s : output) < System.out.println(s); >> >

7. Разделить строку на новую строку

В другой операционной системе есть другая новая строка

В примере используется регулярное выражение \\r?\\n для разделения строки на новую строку и API потока для обрезки и фильтрации пустой строки.

package com.mkyong; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class SplitString7 < public static void main(String[] args) < StringBuilder sb = new StringBuilder(); sb.append("aaa \n"); sb.append("bbb \r\n"); sb.append("ccc\n"); sb.append("\n"); sb.append("ddd\r\n"); sb.append("\r\n"); sb.append("eee\n"); String text = sb.toString(); System.out.println("---Original---"); System.out.println(text); System.out.println("---Split---"); // split by new line, trim and filter empty line Listlines = Arrays.stream(text.split("\\r?\\n")) .map(x -> x.trim()) .filter(x -> x.length() > 0) .collect(Collectors.toList()); for (String line : lines) < System.out.println(line); >> > 
---Original--- aaa bbb ccc ddd eee ---Split--- aaa bbb ccc ddd eee

8. Пример StringTokenizer (устаревший)

В старые времена разработчики Java использовали класс StringTokenizer для разделения строки.

P.S То Строка#разделить() доступен начиная с JDK 1.4.

Примечание Этот StringTokenizer является устаревшим классом, сохраненным по соображениям совместимости; использование не рекомендуется! Пожалуйста, обновите код до строки#split() .

package com.mkyong; import java.util.StringTokenizer; public class SplitString8 < public static void main(String[] args) < String test = "abc.def.123"; // the delimiter is a string, not regex, no need to escape the dot StringTokenizer token = new StringTokenizer(test, "."); while (token.hasMoreTokens()) < System.out.println(token.nextToken()); >> >

Источник

Java разбиение строки регулярным выражением

если не хотите экранировать или не знаете, надо ли, просто пишите text.split(Pattern.quote(«<нужный знак>«)); Тогда значение всегда будет строковым и не касаться регулярок. Ну и если нет автоимпорта, то не забудьте импортировать java.util.regex.Pattern

Статья класс, можно добавить, что в качестве параметра split принимает и сразу несколько разделителей

 String str = "Амо/ре.амо,ре"; String[] words = str.split("[/\\.,]"); // Амо ре амо ре 

А если нет разделителей, но есть сплошная строка длиной N символов, и нужно разделить ее, допустим, на число M ? То как в этом случае быть?

Когда я в первый раз прочитал данную статью, ничего не понял и посчитал данную статью бесполезной. А на тот момент я изучал первый месяц. И сейчас, спустя еще 2 месяца я наконец то понял что тут написано) И могу теперь смело сказать что да, статья полезная.

А если в задаче разделитель вводится с клавиатуры, то как добавить\\ чтоб ошибки зарезервированного знака не было?

По-моему, зря ничего не сказано про то, что точка ( «.») не может служить разделителем, в отличие от запятой например. И её надо обозначать слэшами — («\\.»)

JavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.

Этот веб-сайт использует данные cookie, чтобы настроить персонально под вас работу сервиса. Используя веб-сайт, вы даете согласие на применение данных cookie. Больше подробностей — в нашем Пользовательском соглашении.

Источник

Как разбить строку в Java

Предположим, у нас есть строковая переменная с именем strMain из нескольких слов, таких как Alpha, Beta, Gamma, Delta, Sigma – все они разделены запятой (,).

разбиение строки

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

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

В этом случае разделителем является запятая (,), и результат операции разделения даст вам разделение массива.

Цикл в коде просто печатает каждую строку (элемент массива) после операции разбиения, как показано ниже:

Alpha Beta Delta Gamma Sigma

Пример: метод Java String split() с регулярным выражением и длиной

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

Это может быть достигнуто путем передачи другого аргумента вместе с операцией split, и это будет предел требуемых строк.

Alpha Beta Delta, Gamma, Sigma

Как разбить строку по пробелу

Рассмотрим ситуацию, когда вы хотите разбить строку на пробел. Давайте рассмотрим пример здесь; у нас есть строковая переменная с именем strMain, состоящая из нескольких слов Welcome to Guru99.

Источник

Читайте также:  Background Image
Оцените статью