如何在Java中按关键字拆分字符串

时间:2019-01-31 14:53:13

标签: java regex split matcher

我需要根据我创建的关键字或定界符列表拆分输入并将其放入列表中。

我尝试过简单地将字符串用空格分开,然后再对其进行处理,但是问题是我的某些关键字中包含空格,因此它们被分开会导致不良行为。

// "Jr.", "III", "Sr", "pro se" are all keywords in my list
String input = "Abraham Lincoln Jr. III Sr pro se";
String [] splitBySpace = input.split(" ");
List<String> separatedName = new ArrayList<>(Arrays.asList(splitBySpace);

我的列表最终是:{Abraham, Lincoln, Jr., III, Sr, pro, se} 我希望它是:{Abraham, Lincoln, Jr., III, Sr, pro se} 此输出也将起作用:{Abraham Lincoln, Jr., III, Sr, pro se}(我不需要分隔符列表中的字符串被分开)

2 个答案:

答案 0 :(得分:0)

您可以使用以下命令:\s(?=(Jr\.|III|Sr|pro se))-并添加要保留的关键字。

这里是一个工作示例,以查看其匹配内容:https://regexr.com/47gbm

因此,使用String[] split = input.split("\\s(?=(Jr\\.|III|Sr|pro se))");,您应该会获得所需的结果。

答案 1 :(得分:0)

您可以尝试将其他分隔符添加到字符串中以作为关键字。希望将它们用" "分开。用"|"分开。

String input = "Abraham|Lincoln|Jr.|III|Sr|pro se";
String [] splitByPipe = input.split("\\|");

这样,您将不需要保留任何空间。