【问题标题】:java split string with scanner not losing delimiters带有扫描仪的java拆分字符串不会丢失分隔符
【发布时间】:2018-03-12 06:29:43
【问题描述】:

我得到了类似的句子

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

并希望将它们拆分为 andor

当我使用代码时:

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

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

【问题讨论】:

    标签: java string split delimiter


    【解决方案1】:

    为什么要使用 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多