Разделитель, который потребляет любые кавычки ввода

Я читаю из файлаScanner, используя разделитель следующим образом:

.useDelimiter("[^a-zA-Z]+"); 

но я хотел бы знать, каким образом часть файла может быть «пропущена».

Например, если файл содержал:

hello world "such a lovely day"
take a walk through the field

Я хотел бы, чтобы сканер вернул эти маркеры:

hello
world
take
a
walk
through
the
field

1 ответ

  1. Лечить"...", как это был один из символов разделителя:

    .useDelimiter("([^a-zA-Z"]("(.*?)")?)+");
    

    Некоторый тестовый код:

    String input = "hello world \"such a lovely day\"\ntake a walk through the field";
    Scanner scanner = new Scanner(input).useDelimiter("([^a-zA-Z\"](\"(.*?)\")?)+");
    while(scanner.hasNext()) {
        System.out.println(scanner.next());
    }
    

    Выход:

    hello
    world
    take
    a
    walk
    through
    the
    field