【问题标题】:How to split a string after third space? [duplicate]如何在第三个空格后拆分字符串? [复制]
【发布时间】:2015-09-06 23:47:30
【问题描述】:

我试图在 Java 中每隔三个空格分割一个字符串。我尝试了很多正则表达式,但没有运气:

如果我有一个字符串:

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

我希望它在一年之后拆分(假设它总是 4 位数)

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

【问题讨论】:

  • 为什么不在“四位数”之后分割(而不是“第三个空格”)?
  • 我不确定该怎么做。正则表达式是什么?

标签: java string split


【解决方案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.

【讨论】:

    【解决方案2】:

    您可以在每个 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");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 2017-06-18
      • 2013-12-24
      • 2013-04-19
      • 2017-09-03
      相关资源
      最近更新 更多