Разделитель несловесных символов "\ W" считает "запятая + пробел" как символ - PullRequest
0 голосов
/ 17 апреля 2019

Учитывая строку, соответствующую регулярному выражению [A-Za-z !,?._'@]+, я хочу разбить строку на токены. Маркер состоит из одной или нескольких последовательных букв английского алфавита. Затем я хочу напечатать количество токенов. Это мой код:

public class mySolution {

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    String s = scan.nextLine();
    String [] parts = new String[1159];
    parts = s.split("\\W");
    System.out.println(parts.length);
    for(int i = 0; i< parts.length; i++) {
        System.out.println(parts[i]);
    }
    scan.close();
}
}

Это попытка ввода:

He is a very very good boy, isn't he?

И вот что я получаю:

11
He
is
a
very
very
good
boy
isn
t
he

Как видите, все хорошо, но число токенов оказалось 11, а должно быть 10! Я полагаю, что разделитель символов без слов "\W" считает "запятая + пробел" как символ! Я прав?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...