我试图在Java中每隔三个空间后分割字符串。我尝试了很多正则表达式,没有运气:
如果有一个字符串:
Tuesday, August 11, 1993 Monday, September 10, 2015 Tuesday, January 21, 2015 Wednesday, July 15, 2015
我希望这个在年份之后分割(假设它总是4位数)
最好的方法??任何帮助都非常感谢:)
最简单的理解方法是找到一个空格三次,然后取两个子字符串——在空格位置的前面和后面。
使用indexOf
过载,占用fromIndex
在循环中的位置,数三个空格,然后使用substring
两次。
String s = "quick brown fox jumps over the lazy dog";
int pos = 0;
for (int i = 0 ; pos != -1 && i != 3 ; i++, pos++) {
pos = s.indexOf(' ', pos);
}
System.out.println("'"+s.substring(0, pos-1)+"'");
System.out.println("'"+s.substring(pos, s.length())+"'");
演示。
您可以使用正则表达式在每个4位数匹配后分割:
String toSplit = "Tuesday, August 11, 1993 Monday, September 10, 2015 Tuesday, January 21, 2015 Wednesday, July 15, 2015";
String[] split = toSplit.split("(?<=\d{4})\s");
如果你想要更严格,只在一个完全格式化的日期之后分割,你可以用这个来代替:
String[] split = toSplit.split("(?<=\w{1,9}, \w{1,9} \d{1,2}, \d{4})\s");