java split string with scanner 不丢失定界符

标签 java string split delimiter

我有这样的句子

"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

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

最佳答案

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

关于java split string with scanner 不丢失定界符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49229283/

相关文章:

java - JMF 和 RTP 协议(protocol)

Java netbeans 表单 - 从组合框中获取值

java - 查找 XML 标记值的正确正则表达式 - java

regex - 从单元格中提取唯一文本字符/表情符号的列表

java - 如何根据条件隐藏recyclerview中的json对象?

java switch语句机制

ruby - 如何在 Ruby 中将字符串转换为二进制

python - 当字符串可能不包含模式或所有 n 元素时,如何在 Python 中可靠地拆分字符串?

java - 尝试使用 String.split 时出现意外行为 ("\\?")

Java 1.9 模块 : Different output for same class using java while overwriting java.net.InetAddress