java 使用扫描仪拆分字符串,不丢失定界符
java split string with scanner not losing delimiters
我得到了这样的句子
"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
请注意 and/or 可能因句子而异。换句话说,它必须是动态的。
为什么要使用 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
我得到了这样的句子
"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
请注意 and/or 可能因句子而异。换句话说,它必须是动态的。
为什么要使用 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