How to get a date and count elements from a string?
我有下面的线
1 |
我需要三个独立的字符串,如下所示
1 2 3 |
我不知道我怎样才能以最有效的方式做到这一点,尤其是计算日期之后的元素。
其他可能的字符串是
要从字符串中获取三个部分,可以使用
1 | ^([A-Za-z. ]+) ((?:[0-9]{2}/){2}[0-9]{4}) (.*)$ |
调试程序演示
名称是Capture Group 1,日期是2,x是3。此regex假定日期始终有效。如果您真的需要确保一个正确的日期,您可以阅读我写的关于使用regex验证数值范围的答案。
另外请注意,虽然您可以使用
要获得"x"个数,只需拆分第三组,然后计算得到的数组元素:
1 | int xPieceCount = matcher.group(3).split("").length(); |
试试这个
先找到日期模式(dd/mm/yyyy),然后再得到其他简单的日期模式。
1 2 3 4 5 6 7 8 9 10 | String str1 ="Peter L. Douglas 04/02/1984 X1 X5 YY"; Pattern pt = Pattern.compile("\\d\\d/\\d\\d/\\d\\d\\d\\d"); Matcher m = pt.matcher(str1); if (m.find()) { System.out.println(str1.substring(0, m.start()).trim()); System.out.println(m.group()); System.out.println(str1.substring(m.end()).trim().split("\\s+").length); } |
输出
1 2 3 | Peter L. Douglas 04/02/1984 3 |