java拆分字符串与扫描仪不丢失分隔符

时间:2018-03-12 06:29:44

标签: java string split delimiter

我得到了像

这样的句子
"Peter Tosh  and Mary Miller  or Michael or Stephan and Andrea Kurnikova"

并希望将它们拆分为

当我使用代码时:

Scanner fromStr = new Scanner("Peter Tosh  and Mary Miller  or Michael or Stephan and Andrea Kurnikova");
fromStr.useDelimiter(" and | or ");
while (fromStr.hasNext()) {
    String temp = fromStr.next();
    System.out.println(temp);
}

结果是:

Peter Tosh 
Mary Miller 
Michael
Stephan
Andrea Kurnikova

但是我需要以下内容(不会丢失分隔符值):

Peter Tosh 
and Mary Miller 
or Michael
or Stephan
and Andrea Kurnikova

请考虑和/或因句子而异。换句话说,它必须是动态的。

1 个答案:

答案 0 :(得分:4)

为什么你使用Scanner和所有循环?你可以使用带有正则表达式的String::split,你可以使用这个正则表达式(?=and|or)来分割:

String str = "Peter Tosh  and Mary Miller  or Michael or Stephan and Andrea Kurnikova";
String[] split = str.split("(?=and|or)");
Arrays.asList(split).forEach(System.out::println);

输出:

Peter Tosh  
and Mary Miller  
or Michael 
or Stephan 
and Andrea Kurnikova