如何在第三个空格后拆分字符串?

时间:2015-09-06 23:47:31

标签: java string split

我试图在Java中每隔三个空格后拆分一个字符串。我尝试了许多正则表达式而没有运气:

如果我有一个字符串:

Tuesday, August 11, 1993 Monday, September 10, 2015 Tuesday, January 21, 2015 Wednesday, July 15, 2015

我想在年后分开(假设它总是4位数)

最好的办法吗?非常感谢任何帮助:)

2 个答案:

答案 0 :(得分:1)

最简单的理解方法是找到一个空格三次,然后取两个子串 - 在空间位置之前和之后。

在循环中使用indexOf overload that takes the fromIndex position,计算三个空格,然后两次使用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())+"'");

Demo.

答案 1 :(得分:0)

您可以使用正则表达式在每次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");