如何转换带有多余字符的字符串

问题描述 投票:0回答:2

如何转换带有多余字符的字符串

字符串str =“文件-09-01-2024”

模式=“dd-MM-YYYY”

使用 SimpleDateFormat 和模式=“dd-MM-YYYY”

我不知道还能有多少个额外的符号

java string date format simpledateformat
2个回答
1
投票

使用正则表达式提取

dd-MM-YYYY
部分。 匹配它的简单正则表达式可能是
\d{2}-\d{2}-\d{4}
。这匹配 2 个数字、一个连字符、2 个数字、一个连字符,然后是 4 个数字。您可以在 regex101 上测试它:https://regex101.com/r/socnHp/1.

示例:

String str = "file-09-01-2024"
Matcher matcher = Pattern.compile("\\d{2}-\\d{2}-\\d{4}").matcher(str);
matcher.find();
String mmddyy = matcher.group(); // this gets the first substring that matches the regex
Date parsed = new SimpleDateFormat("dd-MM-yyyy").parse(mmddyy);

注意

我提供的正则表达式仍然会匹配不正确的日期,例如 09-14-2024。我相信对于您的用例来说这很好,但如果您需要更严格的验证,您可以在本网站上检查类似的问题,例如this one


0
投票

子串

使用

String#substring
方法提取相关部分。

String input = "file-09-01-2024" ;
String datePortion = input.substring( input.length() - 10 ) ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd-MM-uuuu" ) ;
LocalDate ld = LocalDate.parse( datePortion , f ) ;

请参阅此 在 Ideone.com 上运行的代码

当然,理想的解决方案是教育数据发布者:

  • 将数据共享为正确分隔的文本。
  • 仅在交换日期时间值时使用标准 ISO 8601 格式。对于日期,即 YYYY-MM-DD。

避免遗留日期时间类

使用简单日期格式

切勿使用

SimpleDateFormat
Date
Calendar

这些存在严重缺陷的类现在已成为遗留类,多年前已被 JSR 310 中定义的现代 java.time 类所取代。

© www.soinside.com 2019 - 2024. All rights reserved.