Разделить текст без пробелов по словам в списке - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть три списка, которые я объединил в один список

    static List allLists = Stream.of(list1, list2, list3)
        .flatMap(Collection::stream)
        .collect(Collectors.toList());

У меня есть пользовательский ввод без пробелов

String = "HelloIwanttobookanonlineseminaratyourcompany"

Все слова в пользовательском вводе String уже есть в allLists. Я хочу перебрать allLists и вставить пробелы в строку с каждым найденным словом. Результат должен быть:

String = "Hello I want to book an online seminar at your company"

Есть ли простое решение, которое я пропускаю?

1 Ответ

0 голосов
/ 02 сентября 2018

Используйте однострочник, который использует (массивный) взгляд позади, построенный из allLists, чтобы вставить пробелы перед каждым словом:

str = str.replaceAll("(?<=" + String.join("|", allLists) + ")", " ");

Обратите внимание, что порядок слов в allLists важен; если вы хотите, чтобы более длинные слова имели предпочтение, сначала перечислите их (рекомендуется). Например, если в вашем списке есть и «книга», и «бронирование», разместите бронирование перед бронированием, иначе вы получите «бронирование» в своем результате.

...