разделение строки пробелом, точкой и запятой одновременно - PullRequest
0 голосов
/ 09 ноября 2019

Как я могу разделить строку на пробел, точку и запятую одновременно? Я хочу избавиться от них и получить только слова.

Мой код для пробела:

str=array.get(0).split(" ");

После советов я написал это

 str=array.get(0).split("[ ]|[.]|[,]|[ \t]");

но я вижу новую проблему

Строка

Новая проблема

Ответы [ 2 ]

2 голосов
/ 09 ноября 2019

Использование .split() может привести к пустым записям в вашем массиве.

Попробуйте это:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

String text = "This is... a real sentence, actually.";

Pattern reg = Pattern.compile("\\w+");
Matcher m = reg.matcher(text);

while (m.find()) {
    System.out.println(m.group());
}
1 голос
/ 09 ноября 2019

Метод split можно использовать с шаблоном Regex, так что вы можете сопоставить более сложные случаи, чтобы разделить вашу строку.

Соответствующим шаблоном для вашего случая будет:

[ \.,]+

Regex Объяснение:
[., ] + - Скобки создают набор символов, который будет соответствовать любому символу в наборе.
[. ,] + - Знак плюс - это квантификатор, он будет совпадать с предыдущим токеном (набором символов) один или несколько раз, это решает проблему, когда токены следуют друг за другом, создавая пустые строки вмассив.

Вы можете проверить его с помощью следующего кода:

class Main {
  public static void main(String[] args) {
    String str = "Hello, World!, StackOverflow. Test Regex";
    String[] split = str.split("[ .,]+");
    for(String s : split){
      System.out.println(s);
    }    
  }
}

Вывод:
Hello
World!
StackOverflow
Test
Regex

...