如何在 Java 中从字符串中识别日期
最近,我遇到了一个相当“简单”的问题。假设有句子(保存在字符串中),我需要找出此字符串中是否有任何日期。挑战在于日期可以采用许多不同的格式。列表中显示了一些示例:
- 1956年6月12日
- 伦敦,2014年10月21日
- 13 十月 1999
- 01/11/2003
值得一提的是,它们包含在一个字符串中。因此,作为一个例子,它可以是这样的:
String s = "This event took place on 13 October 1999.";
在这种情况下,我的问题是我如何检测到此字符串中有日期。我的第一种方法是搜索“事件”这个词,然后尝试本地化日期。但是随着日期的可能格式越来越多,这个解决方案并不是很漂亮。我尝试的第二个解决方案是创建一个几个月的列表并进行搜索。这产生了良好的结果,但仍然错过了日期全部以数字表示的情况。
到目前为止,我还没有尝试过的一种解决方案是设计正则表达式并尝试在字符串中找到匹配项。不确定此解决方案可能会降低性能的程度。
我应该考虑的好解决方案是什么?以前有人遇到过类似的问题吗?你找到了什么解决方案?
有一件事是肯定的,没有时间,所以唯一有趣的部分是日期。