Java 如何从字符串中获取日期和计数元素?
我有以下字符串Java 如何从字符串中获取日期和计数元素?,java,regex,Java,Regex,我有以下字符串 String str1 = "Peter L. Douglas 04/02/1984 X1 X5 YY" ; 我需要得到三个单独的字符串,如下所示 String str1_name = "Peter L. Douglas" ; String str1_date = "04/02/1984" ; String str1_nbr = "3" ; // 3 is three elements after date , i.e. X1 X5 YY 我不知道如何才能
String str1 = "Peter L. Douglas 04/02/1984 X1 X5 YY" ;
我需要得到三个单独的字符串,如下所示
String str1_name = "Peter L. Douglas" ;
String str1_date = "04/02/1984" ;
String str1_nbr = "3" ; // 3 is three elements after date , i.e. X1 X5 YY
我不知道如何才能以最有效的方式做到这一点,尤其是在日期之后计算元素
其他可能的字符串包括
String str1=“Alexander Evanston 05/02/1986 X5 YY”代码>要从字符串中获取三个部分,可以使用
^([A-Za-z. ]+) ((?:[0-9]{2}/){2}[0-9]{4}) (.*)$
名称为捕获组1,日期为2,“X”片段为3。此正则表达式假定日期始终有效。如果您确实需要确保正确的日期,您可以阅读我写的关于使用正则表达式验证数字范围的文章
还请注意,虽然您可以使用\d
代替[0-9]
,[0-9]
更通用,例如\d
可以在.NET中捕获非美国数字。更多信息和信息
要获得“X”块的数量,只需拆分第三组,然后计算得到的数组元素:
int xPieceCount = matcher.group(3).split(" ").length();
要从字符串中获取三个部分,可以使用
^([A-Za-z. ]+) ((?:[0-9]{2}/){2}[0-9]{4}) (.*)$
名称为捕获组1,日期为2,“X”片段为3。此正则表达式假定日期始终有效。如果您确实需要确保正确的日期,您可以阅读我写的关于使用正则表达式验证数字范围的文章
还请注意,虽然您可以使用\d
代替[0-9]
,[0-9]
更通用,例如\d
可以在.NET中捕获非美国数字。更多信息和信息
要获得“X”块的数量,只需拆分第三组,然后计算得到的数组元素:
int xPieceCount = matcher.group(3).split(" ").length();
试试这个
首先找到日期模式(DD/MM/YYYY),然后再找到其他同样简单的模式
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);
}
输出
Peter L. Douglas
04/02/1984
3
试试这个
首先找到日期模式(DD/MM/YYYY),然后再找到其他同样简单的模式
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);
}
输出
Peter L. Douglas
04/02/1984
3
您的字符串的实际模式是什么?尾随元素是否总是两个字符?您没有提供足够的信息。字符串的实际模式是什么?尾随元素是否总是两个字符?您没有提供足够的信息。将逻辑锚定在单个日期正则表达式上是一个有趣的想法+1将逻辑锚定在单个日期正则表达式上的有趣想法+1.