【问题标题】:Strip date from String with junk data - Java从带有垃圾数据的字符串中删除日期 - Java
【发布时间】:2021-09-30 07:57:33
【问题描述】:

我需要知道是否有任何方法可以单独从文本中删除日期,如下面的使用 java.util.我试图找到更通用的东西,但无法获得任何帮助,因为输入不同。

一些示例输入:

This time is  Apr.19,2021 Cheers

19-04-2021 Cheers

This time is  19-APR-2021

我看到一些代码可以处理尾随的垃圾字符,但如果日期在字符串之间并且它因不同的格式而异,则找不到任何内容。

【问题讨论】:

  • 日期的全部格式是什么?
  • 根据给出的例子,我会用空格分割每个String,然后检查哪些结果包含数字,然后尝试解析它们检查所有可能的模式。
  • 你所说的“剥离”是指“删除”,也就是说"19-04-2021 Cheers"变成" Cheers"

标签: java string date


【解决方案1】:

我们可以在此处使用String#replaceAll 进行正则表达式单行方法:

String[] inputs = new String[] {
    "This time is  Apr.19,2021 Cheers",
    "19-04-2021 Cheers",
    "This time is  19-APR-2021",
    "Hello 2021-19-Apr World"
};
for (String input : inputs) {
    String date = input.replaceAll(".*(?<!\\S)(\\S*\\b\\d{4}\\b\\S*).*", "$1");
    System.out.println(date);
}

打印出来:

Apr.19,2021
19-04-2021
19-APR-2021
2021-19-Apr

【讨论】:

    【解决方案2】:

    如果您假设“日期”是以 4 位“单词”结尾的任何一系列字母/数字/点/逗号/破折号字符,请匹配并替换为空白以将其删除

    str = str.replaceAll("\\b[A-Za-z0-9.,-]+\\b\\d{4}\\b", "");
    

    【讨论】:

      最近更新 更多