用列表中的单词分割没有空格的文本

时间:2018-09-01 21:01:22

标签: java string list split java-stream

我有三个列表,已经合并为一个列表

    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 :(得分:3)

使用单行代码,该代码行采用allLists构建的(大量)外观在每个单词之前插入空格:

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

请注意,allLists中的单词顺序很重要;如果您希望较长的单词优先,请首先列出(推荐)。例如,如果“ book”和“ booking”都在列表中,请在预订前先预订,否则结果中将显示“ booking”。