【发布时间】:2016-02-06 10:37:01
【问题描述】:
最近我遇到了一个相当“简单”的问题。假设有句子(保存在一个String中),我需要找出这个String中是否有任何日期。挑战在于日期可以采用许多不同的格式。列表中显示了一些示例:
- 1956 年 6 月 12 日
- 伦敦,2014 年 10 月 21 日
- 1999 年 10 月 13 日
- 01/11/2003
值得一提的是,这些都包含在一个字符串中。举个例子,它可以是:
String s = "This event took place on 13 October 1999.";
在这种情况下,我的问题是如何检测到此字符串中有日期。我的第一种方法是搜索“事件”一词,然后尝试本地化日期。但是随着日期的可能格式越来越多,这个解决方案不是很漂亮。我尝试的第二个解决方案是创建几个月的列表并进行搜索。这有很好的结果,但仍然错过了日期全部用数字表示的情况。
到目前为止我还没有尝试过的一种解决方案是设计正则表达式并尝试在字符串中找到匹配项。不确定此解决方案可能会降低多少性能。
我可能应该考虑什么是一个好的解决方案?以前有没有人遇到过类似的问题,您找到了哪些解决方案?
一件事是肯定没有时间,所以唯一有趣的部分是日期。
【问题讨论】:
-
我能想到接近这个问题的唯一方法是结合你所有的方法。例如。在字符串中查找月份,然后尝试查找美国日期(MM/DD/YYYY),然后尝试查找欧洲日期(DD.MM.YYYY).....这取决于什么样的字符串你收到!如果某个字符串包含“它发生在 1989 年第二个月的第一天”,您可能无法实现它!)
-
唯一的办法就是解析你的字符串。
-
我记得有一个人有同样的问题:stackoverflow.com/questions/33098511/…
-
这不是一个简单的问题。如果您需要确定日期是什么,这是无法解决的:您的最后一个示例可能是 11 月 1 日或 1 月 11 日