bba*_*kiu 19 java string parsing date
最近我遇到了一个相当"容易"问题的挑战.假设有句子(保存在字符串中),我需要找出这个字符串中是否有任何日期.挑战在于日期可以采用多种不同的格式.列表中显示了一些示例:
值得一提的是,这些都包含在一个字符串中.作为一个例子,它可以像:
String s = "This event took place on 13 October 1999.";
Run Code Online (Sandbox Code Playgroud)
我在这种情况下的问题是如何检测到该字符串中有一个日期.我的第一种方法是搜索"事件"一词,然后尝试本地化日期.但随着日期越来越多的可能格式,这个解决方案并不是很漂亮.我尝试的第二个解决方案是创建一个月份和搜索列表.这有很好的结果但仍然错过了日期以数字表示的情况.
到目前为止我还没有尝试过的一个解决方案是设计正则表达式并尝试在字符串中找到匹配项.不确定此解决方案可能会降低多少性能.
什么是我应该考虑的好解决方案?以前有人遇到过类似的问题,你找到了什么解决方案?
有一件事是肯定没有时间,所以唯一有趣的部分是约会.
Nig*_*ode 21
Natty是一个用Java编写的自然语言日期解析器.给定日期表达式,natty将应用标准语言识别和翻译技术来生成具有可选解析和语法信息的相应日期列表.
import com.joestelmach.natty.*;
List<Date> dates =new Parser().parse("Start date 11/30/2013 , end date Friday, Sept. 7, 2013").get(0).getDates();
System.out.println(dates.get(0));
System.out.println(dates.get(1));
//output:
//Sat Nov 30 11:14:30 BDT 2013
//Sat Sep 07 11:14:30 BDT 2013
Run Code Online (Sandbox Code Playgroud)