Как разбить 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
Для разбиения строки на подстроки в 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]+ означает один или более символов запятой или пробела.
Как распарсить строку java
если не хотите экранировать или не знаете, надо ли, просто пишите text.split(Pattern.quote(«<нужный знак>«)); Тогда значение всегда будет строковым и не касаться регулярок. Ну и если нет автоимпорта, то не забудьте импортировать java.util.regex.Patternнужный>
MmN Уровень 23
13 ноября 2022
Статья класс, можно добавить, что в качестве параметра split принимает и сразу несколько разделителей
String str = "Амо/ре.амо,ре"; String[] words = str.split("[/\\.,]"); // Амо ре амо ре
13 сентября 2022
А если нет разделителей, но есть сплошная строка длиной N символов, и нужно разделить ее, допустим, на число M ? То как в этом случае быть?
Dregid Уровень 40
12 сентября 2022
Когда я в первый раз прочитал данную статью, ничего не понял и посчитал данную статью бесполезной. А на тот момент я изучал первый месяц. И сейчас, спустя еще 2 месяца я наконец то понял что тут написано) И могу теперь смело сказать что да, статья полезная.
CrazyKISS Уровень 19
6 августа 2022
split(«\\|»); почему экранируем 2мя слешами? почему не одним, как обычно?
bighugеmistеr Уровень 15
29 мая 2022
Не показали только случай, когда «разделители» идут подряд.
YesOn Уровень 13
10 мая 2022
Очень полезная и информативная статья, спасибо!
9 февраля 2022
А если в задаче разделитель вводится с клавиатуры, то как добавить\\ чтоб ошибки зарезервированного знака не было?
Arcady Уровень 13
8 декабря 2021
По-моему, зря ничего не сказано про то, что точка ( «.») не может служить разделителем, в отличие от запятой например. И её надо обозначать слэшами — («\\.»)
Сообщество
JavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
«Программистами не рождаются» © 2024 JavaRush
Скачивайте наши приложения
«Программистами не рождаются» © 2024 JavaRush
Этот веб-сайт использует данные cookie, чтобы настроить персонально под вас работу сервиса. Используя веб-сайт, вы даете согласие на применение данных cookie. Больше подробностей — в нашем Пользовательском соглашении.
Как разделить строку на символы java
Чтобы разбить строку на символы в Java , вы можете использовать метод toCharArray() класса String . Этот метод возвращает массив символов, которые составляют данную строку.
String str = "Hello, world!"; char[] chars = str.toCharArray(); for (char c : chars) System.out.println(c); >
Этот код разобьет строку «Hello, world!» на массив символов и напечатает каждый символ в консоли: