java - 按列表中的单词拆分没有空格的文本

标签 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"

有没有我想念的简单解决方案?

最佳答案

使用从 allLists 构建的(大量)look behind 的单行代码在每个单词前插入空格:

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

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

关于java - 按列表中的单词拆分没有空格的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52132151/

相关文章:

java - 如何配置 EAR 以访问现有的 Websphere 共享库?

java - 将记录写入 Berkeley DB 时出现问题

python - 确定子字符串在字符串列表中的位置

python - 根据存储在另外 2 个列表中的值对位置列表进行排序

python - 在列表python中查找列表

python - 如何为列表中的每个元素添加值?

java - Spring Boot 记录器换行符

java - Java 中的 SimHash 实现?

sql - 将表达式树解析为 Sqlstring - 不是重新发明轮子

Python(字符串): Using a string saved in a DataFrame cell as a pandas Formula