- Как разделить строку в Java
- 1. Разделить строку
- 2. Разделить строку по ограничению
- 3. Разделите строку специальными символами регулярного выражения.
- 4. Разделите строку несколькими разделителями
- 5. Разделите строку и Java 8
- 6. Разделите строку пробелом или несколькими пробелами
- 7. Разделить строку на новую строку
- 8. Пример StringTokenizer (устаревший)
- Java разбиение строки регулярным выражением
- Как разбить строку в Java
- Пример: метод Java String split() с регулярным выражением и длиной
- Как разбить строку по пробелу
Как разделить строку в Java
Примеры разделения строки Java, как разделить строку с помощью тире, точки, новой строки, пробелов, регулярных выражений, специальных символов и потока Java 8.
В Java мы можем использовать String#split для разделения строки. split() принимает регулярное выражение в качестве аргумента, что означает, что мы можем разделить строку с помощью шаблона регулярного выражения.
public String[] split(String regex)
- Разделить строку
- Разделить строку по ограничению
- Разделение строки специальными символами регулярного выражения
- Разделите строку несколькими разделителями
- Разделите строку и Java 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 специальных символов имеют особое значение:
- Точка или точка .
- Знак плюс +
- Звездочка или звезда *
- Знак вопроса ?
- Каретка ^
- Знак доллара $
- Открывающая и закрывающая скобки ( и )
- Открывающая квадратная скобка [
- Открывающая фигурная скобка
- Символ трубы |
- Обратная косая черта \
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.