java - 从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)。
解决方案
您可以捕获两个日期,只需调用该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);
请注意,这可以与 awhile(m.find())
和 a一起使用,List<String
以便能够提取您可以找到的每个日期。
推荐阅读
- java - 异常正在发生,我不知道为什么
- c# - App.UseSession() 与 App.UseAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) 与 App.UseCookiePolicy()
- c - 在没有 GTK/QT 的 Linux 中创建系统托盘图标
- networking - k-Means 聚类成固定大小的组
- google-cloud-platform - 如何更改谷歌云内存存储中的“客户端输出缓冲区限制” - Redis
- nginx - Ngnix 中的通配符子域
- java - 需要解释这个 UML 模型
- c++ - 如何使用我创建的 map 函数来打印数组的值
- php - 使用 php、ffmpeg 和 proc_open 逐帧读取视频
- python - 有没有办法扫描目录以查看有多少特定类型的文件?