Токенизатор в Java, занимающийся пробелами и апосторофами - PullRequest
1 голос
/ 05 марта 2012

Мне было интересно, есть ли в Java способ токенизации строки пробелами, НО, если между апострофами есть несколько слов, примите это как "одно слово" ...

, например, еслиУ меня есть:

This "is a great" day

токенайзер строки должен иметь:

  • "This"
  • "is a great"
  • "day"

Спасибо!

1 Ответ

2 голосов
/ 05 марта 2012

Использование String.split() и регулярное выражение, а не StringTokenizer, как насчет:

    String input = "this \"is a great\" day";

    for (String  word: input.split("(?<=\").+(?=\")|\\b\\w+\\b"))
    {
        System.out.println("["+word+"]");
    }

Выход:

[this]
[is a great]
[day]

Из вашего примера я предполагаю, что вы имеете в виду двойные кавычки ("), а не апострофы (').

NB : Первоначально я опубликовал нечто гораздо более простое, что сработало для вашего примера, но не для ввода, например:

" yes this \"is a great\" day all right"
...