84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
字符串同时有三种格式,如下,需要获取字符串中的时间,即2015-05-01 21:35,16小时,15分钟"文章由xxx 于2015-05-01 21:35分享""文章由xxx 于16小时前分享""文章由xxx 于15分钟前分享"注:xxx为用户名
用什么方式可以比较高效地截取时间信息?
我知道正则君强大,能提供详细思路就更好了。。。
闭关修行中......
如果只有这三种的话: (\d{4}-\d{2}-\d{2} \d{2}:\d{2})|(\d{1,2}小时)|(\d{1,2}分钟)
Java 没怎么碰过,给个思路吧,首先正则直接匹配/于(.+?)分享/g,获取到时间字符串,直接 Date 化看是否成功,如果成功则获取到了没成功则是词义化的时间,自己写一个函数根据当前时间推断词义化时间的具体时间。
/于(.+?)分享/g
正则表达式(逃
补充答案:String str="文章由xxx 于2015-05-01 21:35分享";方法一:(简单粗暴)
int start=str.lastIndexOf("于"); int end=str.lastIndexOf("分享"); String result=str.substring(start+1,end);
方法二:(正则)
String regEx="(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2})|(\\d{1,2}小时)|(\\d{1,2}分钟)"; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(str); if(m.find()){ String result=m.group(); }
注:常规法,不能处理掉“前”字;Java的正则表达式单斜杠变为双斜杠,否则会报错Invalid escape sequence
用正则表达式。
如果只有这三种的话: (\d{4}-\d{2}-\d{2} \d{2}:\d{2})|(\d{1,2}小时)|(\d{1,2}分钟)
Java 没怎么碰过,给个思路吧,首先正则直接匹配
/于(.+?)分享/g
,获取到时间字符串,直接 Date 化看是否成功,如果成功则获取到了没成功则是词义化的时间,自己写一个函数根据当前时间推断词义化时间的具体时间。正则表达式(逃
补充答案:
String str="文章由xxx 于2015-05-01 21:35分享";
方法一:(简单粗暴)
方法二:(正则)
注:常规法,不能处理掉“前”字;Java的正则表达式单斜杠变为双斜杠,否则会报错Invalid escape sequence
用正则表达式。