#java #regex #string #split
Вопрос:
Я хочу разделить заданную строку в соответствии с заданным форматом -> > ,;:.?!
.То, что я делаю, приведено ниже, но всякий раз, когда она сталкивается с более чем 1 пробелом, она добавляет пространство в массив. Мне просто нужно слово, а не пространство.
вход::
hello Hello HEllo hi hi: hi! Welcome, welcome
выход::
13
привет
, привет, привет, привет, привет
привет
Добро пожаловать
добро пожаловать
ОЖИДАЕМЫЙ РЕЗУЛЬТАТ::
8
привет
Привет
Привет
привет
привет
привет
привет Добро пожаловать Добро
пожаловать
import java.util.Scanner;
class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
String[] arr = s.split("[ ,;:.?!]");
System.out.println(arr.length);
for (String string : arr) {
System.out.println(string);
}
}
}
Ответ №1:
Ваше регулярное выражение, соответствующее только 1 символу, вы можете добавить {1,2}
к нему, чтобы оно соответствовало 1 или 2 символам, или даже заменить
его на 1 или более.
import java.util.Scanner;
class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
String[] arr = s.split("[ ,;:.?!]{1,2}");
System.out.println(arr.length);
for (String string : arr) {
System.out.println(string);
}
}
}
Ответ №2:
Попробуйте обрезать веревку.
System.out.println(string.trim());
Или, как говорили другие, вы можете избежать символа пробела, как это:
String[] arr = s.split("[\s ,;:.?!]");