Как распарсить строку java
Перейти к содержимому

Как распарсить строку java

  • автор:

15.22. Java – Метод split()

Метод split() – в Java разделяет данную строку вокруг данного регулярного выражения и имеет два варианта.

Синтаксис

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

Параметры

Подробная информация о параметрах:

  • regex – разграничение регулярного выражения;
  • limit – порог, результатом которого означает, как много строк, должно быть возвращено.

Возвращаемое значение

  • В Java split() возвращает массив строк, вычисленных путем разделения данной строки вокруг данного регулярного выражения.

Пример 1: разделить строку вокруг регулярного выражения

import java.io.*; public class Test < public static void main(String args[]) < String Str = new String("Добро-пожаловать-на-ProgLang.su"); System.out.println("Возвращаемое значение: "); for (String retval : Str.split("-", 2)) < System.out.println(retval); >System.out.println(); System.out.println("Возвращаемое значение: "); for (String retval : Str.split("-", 3)) < System.out.println(retval); >System.out.println(); System.out.println("Возвращаемое значение: "); for (String retval : Str.split("-", 0)) < System.out.println(retval); >System.out.println(); System.out.println("Возвращаемое значение: "); for (String retval : Str.split("-")) < System.out.println(retval); >> > 

Получим следующий результат:

Возвращаемое значение: Добро пожаловать-на-ProgLang.su Возвращаемое значение: Добро пожаловать на-ProgLang.su Возвращаемое значение: Добро пожаловать на ProgLang.su Возвращаемое значение: Добро пожаловать на ProgLang.su 

Пример 2: разделить строку на слова

import java.io.*; public class Test < public static void main(String args[]) < String Str = new String("Разделяем эту строку на слова"); for (String retval : Str.split(" ")) < System.out.println(retval); >> > 

Получим следующий результат:

Разделяем эту строку на слова 

Оглавление

  • 1. Java – Самоучитель для начинающих
  • 2. Java – Обзор языка
  • 3. Java – Установка и настройка
  • 4. Java – Синтаксис
  • 5. Java – Классы и объекты
  • 6. Java – Конструкторы
  • 7. Java – Типы данных и литералы
  • 8. Java – Типы переменных
  • 9. Java – Модификаторы
  • 10. Java – Операторы
  • 11. Java – Циклы и операторы цикла
  • 11.1. Java – Цикл while
  • 11.2. Java – Цикл for
  • 11.3. Java – Улучшенный цикл for
  • 11.4. Java – Цикл do..while
  • 11.5. Java – Оператор break
  • 11.6. Java – Оператор continue
  • 12. Java – Операторы принятия решений
  • 12.1. Java – Оператор if
  • 12.2. Java – Оператор if..else
  • 12.3. Java – Вложенный оператор if
  • 12.4. Java – Оператор switch..case
  • 12.5. Java – Условный оператор (? 🙂
  • 13. Java – Числа
  • 13.1. Java – Методы byteValue(), shortValue(), intValue(), longValue(), floatValue(), doubleValue()
  • 13.2. Java – Метод compareTo()
  • 13.3. Java – Метод equals()
  • 13.4. Java – Метод valueOf()
  • 13.5. Java – Метод toString()
  • 13.6. Java – Метод parseInt()
  • 13.7. Java – Метод Math.abs()
  • 13.8. Java – Метод Math.ceil()
  • 13.9. Java – Метод Math.floor()
  • 13.10. Java – Метод Math.rint()
  • 13.11. Java – Метод Math.round()
  • 13.12. Java – Метод Math.min()
  • 13.13. Java – Метод Math.max()
  • 13.14. Java – Метод Math.exp()
  • 13.15. Java – Метод Math.log()
  • 13.16. Java – Метод Math.pow()
  • 13.17. Java – Метод Math.sqrt()
  • 13.18. Java – Метод Math.sin()
  • 13.19. Java – Метод Math.cos()
  • 13.20. Java – Метод Math.tan()
  • 13.21. Java – Метод Math.asin()
  • 13.22. Java – Метод Math.acos()
  • 13.23. Java – Метод Math.atan()
  • 13.24. Java – Метод Math.atan2()
  • 13.25. Java – Метод Math.toDegrees()
  • 13.26. Java – Метод Math.toRadians()
  • 13.27. Java – Метод Math.random()
  • 14. Java – Символы
  • 14.1. Java – Метод Character.isLetter()
  • 14.2. Java – Метод Character.isDigit()
  • 14.3. Java – Метод Character.isWhitespace()
  • 14.4. Java – Метод Character.isUpperCase()
  • 14.5. Java – Метод Character.isLowerCase()
  • 14.6. Java – Метод Character.toUpperCase()
  • 14.7. Java – Метод Character.toLowerCase()
  • 14.8. Java – Метод Character.toString()
  • 15. Java – Строки
  • 15.1. Java – Метод charAt()
  • 15.2. Java – Метод compareTo()
  • 15.3. Java – Метод compareToIgnoreCase()
  • 15.4. Java – Метод concat()
  • 15.5. Java – Метод contentEquals()
  • 15.6. Java – Метод copyValueOf()
  • 15.7. Java – Метод endsWith()
  • 15.8. Java – Метод equals()
  • 15.9. Java – Метод equalsIgnoreCase()
  • 15.10. Java – Метод getBytes()
  • 15.11. Java – Метод getChars()
  • 15.12. Java – Метод hashCode()
  • 15.13. Java – Метод indexOf()
  • 15.14. Java – Метод intern()
  • 15.15. Java – Метод lastIndexOf()
  • 15.16. Java – Метод length()
  • 15.17. Java – Метод matches()
  • 15.18. Java – Метод regionMatches()
  • 15.19. Java – Метод replace()
  • 15.20. Java – Метод replaceAll()
  • 15.21. Java – Метод replaceFirst()
  • 15.22. Java – Метод split()
  • 15.23. Java – Метод startsWith()
  • 15.24. Java – Метод subSequence()
  • 15.25. Java – Метод substring()
  • 15.26. Java – Метод toCharArray()
  • 15.27. Java – Метод toLowerCase()
  • 15.28. Java – Метод toString()
  • 15.29. Java – Метод toUpperCase()
  • 15.30. Java – Метод trim()
  • 15.31. Java – Метод valueOf()
  • 15.32. Java – Классы StringBuilder и StringBuffer
  • 15.32.1. Java – Метод append()
  • 15.32.2. Java – Метод reverse()
  • 15.32.3. Java – Метод delete()
  • 15.32.4. Java – Метод insert()
  • 15.32.5. Java – Метод replace()
  • 16. Java – Массивы
  • 17. Java – Дата и время
  • 18. Java – Регулярные выражения
  • 19. Java – Методы
  • 20. Java – Потоки ввода/вывода, файлы и каталоги
  • 20.1. Java – Класс ByteArrayInputStream
  • 20.2. Java – Класс DataInputStream
  • 20.3. Java – Класс ByteArrayOutputStream
  • 20.4. Java – Класс DataOutputStream
  • 20.5. Java – Класс File
  • 20.6. Java – Класс FileReader
  • 20.7. Java – Класс FileWriter
  • 21. Java – Исключения
  • 21.1. Java – Встроенные исключения
  • 22. Java – Вложенные и внутренние классы
  • 23. Java – Наследование
  • 24. Java – Переопределение
  • 25. Java – Полиморфизм
  • 26. Java – Абстракция
  • 27. Java – Инкапсуляция
  • 28. Java – Интерфейсы
  • 29. Java – Пакеты
  • 30. Java – Структуры данных
  • 30.1. Java – Интерфейс Enumeration
  • 30.2. Java – Класс BitSet
  • 30.3. Java – Класс Vector
  • 30.4. Java – Класс Stack
  • 30.5. Java – Класс Dictionary
  • 30.6. Java – Класс Hashtable
  • 30.7. Java – Класс Properties
  • 31. Java – Коллекции
  • 31.1. Java – Интерфейс Collection
  • 31.2. Java – Интерфейс List
  • 31.3. Java – Интерфейс Set
  • 31.4. Java – Интерфейс SortedSet
  • 31.5. Java – Интерфейс Map
  • 31.6. Java – Интерфейс Map.Entry
  • 31.7. Java – Интерфейс SortedMap
  • 31.8. Java – Класс LinkedList
  • 31.9. Java – Класс ArrayList
  • 31.10. Java – Класс HashSet
  • 31.11. Java – Класс LinkedHashSet
  • 31.12. Java – Класс TreeSet
  • 31.13. Java – Класс HashMap
  • 31.14. Java – Класс TreeMap
  • 31.15. Java – Класс WeakHashMap
  • 31.16. Java – Класс LinkedHashMap
  • 31.17. Java – Класс IdentityHashMap
  • 31.18. Java – Алгоритмы Collection
  • 31.19. Java – Iterator и ListIterator
  • 31.20. Java – Comparator
  • 32. Java – Дженерики
  • 33. Java – Сериализация
  • 34. Java – Сеть
  • 34.1. Java – Обработка URL
  • 35. Java – Отправка Email
  • 36. Java – Многопоточность
  • 36.1. Java – Синхронизация потоков
  • 36.2. Java – Межпоточная связь
  • 36.3. Java – Взаимная блокировка потоков
  • 36.4. Java – Управление потоками
  • 37. Java – Основы работы с апплетами
  • 38. Java – Javadoc

Как разбить String на отдельные слова в Java?

Всем Привет! У меня есть такая задача, надо разделить строку на слова, записать ее в массив и затем сравнить каждый элемент с каждым в массиве (т.е. каждое слово с каждым) те которые совпали удалить, недавно прочитал о equals() , который отлично справляется с сравнением строк, но по какой-то причине Он не работает в массиве. Java начал изучать недавно, поэтому строго не судите по коду, всем Спасибо!

public static void main(String[] args) < String b = "Привет Привет Привет"; String s[] = b.split(" "); int i; for (i = 0; i < s.length; i++) < if (s[i].equals(s[i + 1])) < System.out.println(s[i]); >> > 

Отслеживать
2,433 3 3 золотых знака 18 18 серебряных знаков 40 40 бронзовых знаков
задан 7 июл 2017 в 22:27
user257846 user257846
Что значит не работает в массиве? Вам нужно удалить дубликаты слов из строки?
7 июл 2017 в 23:40
я доработал уже все работает,осталось одна проблема надо удалить все те слова которые повторяются
– user257846
7 июл 2017 в 23:41
public static void main(String[] args) < String b = "A A A"; String s[] = b.split(" "); int i; int y; for (i = 0; i < s.length - 1; i++) < for (y = i + 1; y < s.length; y++) if (s[i].equals(s[y])) < System.out.println("i=" + i + " y=" + y + " ->» + s[i]); > >
– user257846
7 июл 2017 в 23:45

тогда уберите эту фразу из вопроса. Вы может использовать Set. Это автоматически избавит вас от повторов.

7 июл 2017 в 23:51
можно поподробней пожалуйста
– user257846
7 июл 2017 в 23:52

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Если воспользоваться возможностями Stream API, то можно решить задачу даже проще:

String s = . Stream.of(s.split("[^A-Za-zА-Яа-я]+")) .map(String::toLowerCase) .distinct().sorted() .forEach(System.out::println); 

Отслеживать
ответ дан 17 июл 2017 в 18:52
Alex Chermenin Alex Chermenin
5,468 15 15 серебряных знаков 36 36 бронзовых знаков

Ваш вариант не учитывает множество пробелов. Тут надо регулярным выражением пользоваться. Извлечь все слова потом поместить в SortedSet . Почему в SortedSet ? Во-первых, он не допускает дублирование, а во-вторых отсортирует все слова по возрастанию, что облегчает проверку.

Pattern.UNICODE_CHARACTER_CLASS — установливает флаг на Юникоде чтобы можно было сделать поиск в любой кодировке. (Если честно не знаю как обстоят дело с поиском слов на азиатских языках как китайский, корейский, японский и т.д.)

Вот что печатает этот класс после запуска:

word = двора
word = дворе
word = дрова
word = на
word = не
word = руби
word = трава
word = траве

Как разбить строку в Java: обучение на примере

В процессе программирования может возникнуть необходимость разбить строку с помощью определенного символа. Метод StrSplit() разбивает строку на массив подстрок с помощью определенного разделителя.

Синтаксис:

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

Параметры:

  • Regex: регулярное выражение, которое применяется к тексту.
  • Limit: максимальная длина возвращаемого массива. Если этот параметр не задан или равен нулю, то метод вернет все строки, соответствующие регулярному выражению.

Пример разбития строки

Предположим, что у нас есть переменная strMain. Ее значение состоит из нескольких слов, разделенных запятой: «Alpha, Beta, Gamma, Delta, Sigma».

Пример разбития строки

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

Чтобы реализовать это, используем метод split (). В качестве аргумента передаем разделить. В нашем случае разделителем является запятая. Код примера:

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 String split() с regex и length

Предположим, что необходимо разделить только часть строки, а оставшийся кусок оставить без изменений. Например:

  1. Alpha
  2. Beta
  3. Delta, Gamma, Sigma

Этого можно добиться путем передачи методу второго аргумента. Взгляните на следующий код:

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]); >> >

Delta, Gamma, Sigma

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

Рассмотрим ситуацию, когда необходимо разделить строку пробелом. Взгляните на пример, приведенный ниже. У нас есть строковая переменная strMain, состоящая из нескольких слов: «Welcome to 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]); >> >

Наталья Кайда автор-переводчик статьи « How to Split a String in Java: Learn with Example »

Как разбить строку на слова java

Для разбиения строки на подстроки в Java можно использовать метод split() . Он разбивает строку на подстроки по заданному разделителю и возвращает массив строк.

Например, если у нас есть строка «Hello World», мы можем разбить ее на две подстроки по пробелу следующим образом:

String str = "Hello World"; String[] parts = str.split(" "); 

В результате выполнения этого кода в массиве parts будут две строки: «Hello» и «World».

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

String str = "apple, banana, cherry"; String[] parts = str.split("[,\\s]+"); 

В этом случае в массиве parts будут три строки: «apple», «banana» и «cherry». Здесь регулярное выражение [,\\s]+ означает один или более символов запятой или пробела.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *