简体   繁体   中英

Strip date from String with junk data - Java

I need to know if there is anyway to strip the date alone from text like below using java. I am trying to find something more generic, but couldn't get any help, As the input varies.

Some example inputs:

This time is  Apr.19,2021 Cheers

or

19-04-2021 Cheers

or

This time is  19-APR-2021

I have seen some code which works for trailing junk characters but couldn't find anything if the date is in between the string and if it varies to different formats.

We could use String#replaceAll here for a regex one-liner approach:

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);
}

This prints:

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

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM