gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:48:43 25 4
gpt4 key购买 nike

我到处搜索过这个问题,但找不到具体的解决方案,而且文档也没有涵盖这个问题。所以我想从此字符串“1-Mar-2019 到 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)。

最佳答案

您只需调用 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})");
Matcher m = p.matcher(str);
if(m.find()) {
startdt = m.group(1);
if(m.find()) {
enddt = m.group(1);
}
}
System.out.println("startdt: "+startdt+" enddt: "+enddt);

请注意,这可以与 while(m.find()) 一起使用和一个 List<String能够提取您能找到的每个日期。

关于java - 从java中的字符串中提取多个日期(dd-MMM-yyyy格式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56848346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com