从java中的字符串中提取多个日期(dd-MMM-yyyy格式)

我到处搜索这个但找不到具体的解决方案,文档也没有涵盖这个。所以我想从这个字符串中提取开始日期和结束日期"1-Mar-2019 to 31-Mar-2019"。问题是我无法提取两个日期字符串。


我在这里找到了最接近的解决方案,但由于信誉不佳而无法发表评论询问如何单独提取值:https://stackoverflow.com/a/8116229/10735227


我正在使用正则表达式模式来查找事件并首先将这两个事件提取到 2 个字符串。

这是我尝试过的:


Pattern p = Pattern.compile("(\\d{1,2}-[a-zA-Z]{3}-\\d{4})");  

Matcher m = p.matcher(str);

while(m.find())

{

    startdt = m.group(1); 

    enddt = m.group(1);   //I think this is wrong, don't know how to fix it

}

System.out.println("startdt: "+startdt+" enddt: "+enddt);

输出是:


startdt: 31-Mar-2019 enddt: 31-Mar-2019

此外,我需要使用 DateFormatter 将字符串转换为日期(如果需要,在个位数日期之前添加尾随 0)。


临摹微笑
浏览 282回答 3
3回答

九州编程

您可以捕获两个日期,只需调用该find方法两次,如果您只有一个,则只会捕获第一个:String str = "1-Mar-2019 to 31-Mar-2019";String startdt = null, enddt = null;Pattern p = Pattern.compile("(\\d{1,2}-[a-zA-Z]{3}-\\d{4})");&nbsp;&nbsp;Matcher m = p.matcher(str);if(m.find()) {&nbsp; &nbsp; startdt = m.group(1);&nbsp;&nbsp; &nbsp; if(m.find()) {&nbsp; &nbsp; &nbsp; &nbsp;enddt = m.group(1);&nbsp; &nbsp; }}&nbsp; &nbsp;System.out.println("startdt: "+startdt+" enddt: "+enddt);while(m.find())请注意,这可以与 a和 a一起使用,List<String以便能够提取您可以找到的每个日期。

慕哥9229398

如果您的文本可能很乱,并且您确实需要使用正则表达式来提取日期范围,您可以使用String str = "Text here 1-Mar-2019 to 31-Mar-2019 and tex there";String startdt = "";String enddt = "";String date_rx = "\\d{1,2}-[a-zA-Z]{3}-\\d{4}";Pattern p = Pattern.compile("(" + date_rx + ")\\s*to\\s*(" + date_rx + ")");&nbsp;&nbsp;Matcher m = p.matcher(str);if(m.find()){&nbsp; &nbsp; startdt = m.group(1);&nbsp;&nbsp; &nbsp; enddt = m.group(2);&nbsp;}System.out.println("startdt: "+startdt+" enddt: "+enddt);// => startdt: 1-Mar-2019 enddt: 31-Mar-2019请参阅Java 演示此外,请考虑此增强功能:将日期作为整个单词进行匹配,以避免在较长的字符串中出现部分匹配:Pattern.compile("\\b(" + date_rx + ")\\s*to\\s*(" + date_rx + ")\\b")如果范围可以用 表示-,或者to您可以用 替换to,(?:to|-)甚至(?:to|\\p{Pd})where\p{Pd}匹配任何连字符/破折号。

GCT1015

你可以简单地使用String::splitString range = "1-Mar-2019 to 31-Mar-2019";String dts [] = range.split(" ");System.out.println(dts[0]);System.out.println(dts[2]);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java