最近我遇到了一个相当“简单”的问题。假设有一些句子(保存在一个字符串中),我需要找出其中是否有任何日期。挑战在于日期可以以许多不同的格式出现,以下是一些示例:
- 1956年6月12日
- 2014年10月21日伦敦
- 1999年10月13日
- 2003年1月11日
值得一提的是这些都包含在一个字符串中。例如:
String s = "This event took place on 13 October 1999.";
在这种情况下,我的问题是如何检测出字符串中是否有日期。我最初的想法是搜索单词"event",然后尝试定位日期。但由于日期格式越来越多,这种解决方案并不美观。我尝试的第二种方法是创建一个月份列表并进行搜索。这样效果不错,但仍会漏掉日期全部使用数字表示的情况。到目前为止,我尚未尝试过的一种解决方案是设计正则表达式并在字符串中查找匹配项。不确定这种解决方案可能降低多少性能。
有没有好的解决方案值得我考虑?有没有人遇到过类似的问题,你们找到了什么解决方案?
有一件事情是肯定的,那就是没有时间,因此唯一有趣的部分就是日期。