如果在一个字符串中取时间日期? 如果在一个字符串中取时间日期?如”www.39.net 2009-7-24 39健康网“的字符串,如何取出字符串”2009-7-24“。这只是其中一种形式,还有如”(04/08 10:49)“,”(2009年04月08日13:54)“,”(03月10日)“,”(04月08日 09:03)“,”04/08 07:28“等,也要能提取出来,希望各位高手赐教,定有高分送上 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果不要后面的小时分秒,就用Split(' ') 通用时间格式的可以用 \d{2,4}[-//]{1}\d{1,2}[-//]{1}\d{1,2} 但你列举的格式太多了, 用正则表达式呀。。正则表达式先提取有可能是时间的字符串,然后用DateTime.TryParse("提取的字符串") 看是否是有效的时间格式顶。。 string patterns = @"\d{2,4}-\d{1,2}-\d{1,2}|\d{2,4}年\d{1,2}月\d{1,2}日|(?!=\()\d{1,2}\/\d{1,2} \d{1,2}:\d{1,2}(?=\))"; //慢慢加吧,反正各种样式用分隔符|隔开好了。string str = "www.39.net 2009-7-24 39健康网 1999年1月1日";System.Text.RegularExpressions.MatchCollection mc = System.Text.RegularExpressions.Regex.Matches(str, patterns, System.Text.RegularExpressions.RegexOptions.IgnoreCase); foreach (System.Text.RegularExpressions.Match m in mc) m.Value //得到的日期值。 Regex regex=new Regex("[0-9]{4}-(1[0,1,2]|[1-9])-(0[1-9]|[1,2][0-9]|3[0,1])")要严密点的话..正则应该挺长的 2009-7-24Regex regex=new Regex(@"^\d{4}-(1[0,1,2])|[1-9]-([1-9]|[1,2][0-9]|3[0,1])$") 04/08 10:49Regex regex=new Regex(@"^(1[0,1,2])|[1-9]/([1-9]|[1,2][0-9]|3[0,1]),[0,1]\d|2[1-4]:[0-6]\d%)2009年04月08日13:54Regex regex=new Regex(@"^\d{4}年(1[0,1,2])|[1-9]月([1-9]|[1,2][0-9]|3[0,1])日,[0,1]\d|2[1-4]:[0-6]\d%)03月10日Regex regex=new Regex(@"^1[0,1,2])|[1-9]月([1-9]|[1,2][0-9]|3[0,1])日$)04月08日 09:03Regex regex=new Regex(@"^1[0,1,2])|[1-9]月([1-9]|[1,2][0-9]|3[0,1])日, [0,1]\d|2[1-4]:[0-6]\d$)04/08 07:28 参考MSDN把各种标准日期型格式各写一个正则,与一下或依次判读。 那就要求你给出所有可能的格式string test = "如果在一个字符串中取时间日期?如”www.39.net 2009-7-24 39健康网“的字符串,如何取出字符串”2009-7-24“。这只是其中一种形式,还有如”(04/08 10:49)“,”(2009年04月08日13:54)“,”(03月10日)“,”(04月08日 09:03)“,”04/08 07:28“等,也要能提取出来,希望各位高手赐教,定有高分送上";MatchCollection mc = Regex.Matches(test, @"(?:\d{4}[-/.年])?\d{1,2}[-/.月]\d{1,2}日?(\s*(?:[01][0-9]|2[0-3])(?::[0-5][0-9]){1,2})?");foreach (Match m in mc){ richTextBox2.Text += m.Value + "\n";}//输出2009-7-242009-7-2404/08 10:492009年04月08日13:5403月10日04月08日 09:0304/08 07:28 那和 字符串连接 差不多比如 获取 身份证中的 日前:string strZgoy="610623 1988 0326 0011";string dCstq=strZgoy.SubString(6,4)+"年"+strZgoy.SubString(10,2)+"月"+strZgoy.SubString(12,2)+"日";Response.Write(dCstq);输出结果:1988年03月26日 XNA C# 读取3D模型的纹理uvw(即uv)坐标 WPF Datagrid数据绑定的问题,求助 如何使用ADO.NET对GridView进行编辑和删除,用三层! C#中FileVersionInfo不能使用,为什么? 关于压缩和修复access数据库 DataGridView不断刷新时界面运行变慢的问题 asp.net页面是如何实现页面布局的 文件按日期排序问题 asp设计页面无法调出?在线等待 请问在C#中,‘{‘有什么作用?如“sum {0}and {1} is {2}”. 用C#编程实现telnet访问,有哪位大虾做过吗?请求一个思路~ datalist全选按钮
但你列举的格式太多了,
正则表达式先提取有可能是时间的字符串,然后用DateTime.TryParse("提取的字符串") 看是否是有效的时间格式顶。。
foreach (System.Text.RegularExpressions.Match m in mc)
m.Value //得到的日期值。
要严密点的话..正则应该挺长的
Regex regex=new Regex(@"^\d{4}-(1[0,1,2])|[1-9]-([1-9]|[1,2][0-9]|3[0,1])$")
04/08 10:49
Regex regex=new Regex(@"^(1[0,1,2])|[1-9]/([1-9]|[1,2][0-9]|3[0,1]),[0,1]\d|2[1-4]:[0-6]\d%)
2009年04月08日13:54
Regex regex=new Regex(@"^\d{4}年(1[0,1,2])|[1-9]月([1-9]|[1,2][0-9]|3[0,1])日,[0,1]\d|2[1-4]:[0-6]\d%)
03月10日
Regex regex=new Regex(@"^1[0,1,2])|[1-9]月([1-9]|[1,2][0-9]|3[0,1])日$)
04月08日 09:03
Regex regex=new Regex(@"^1[0,1,2])|[1-9]月([1-9]|[1,2][0-9]|3[0,1])日, [0,1]\d|2[1-4]:[0-6]\d$)
04/08 07:28
那就要求你给出所有可能的格式string test = "如果在一个字符串中取时间日期?如”www.39.net 2009-7-24 39健康网“的字符串,如何取出字符串”2009-7-24“。这只是其中一种形式,还有如”(04/08 10:49)“,”(2009年04月08日13:54)“,”(03月10日)“,”(04月08日 09:03)“,”04/08 07:28“等,也要能提取出来,希望各位高手赐教,定有高分送上";
MatchCollection mc = Regex.Matches(test, @"(?:\d{4}[-/.年])?\d{1,2}[-/.月]\d{1,2}日?(\s*(?:[01][0-9]|2[0-3])(?::[0-5][0-9]){1,2})?");
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "\n";
}
//输出
2009-7-24
2009-7-24
04/08 10:49
2009年04月08日13:54
03月10日
04月08日 09:03
04/08 07:28
比如 获取 身份证中的 日前:
string strZgoy="610623 1988 0326 0011";
string dCstq=strZgoy.SubString(6,4)+"年"+strZgoy.SubString(10,2)+"月"+strZgoy.SubString(12,2)+"日";
Response.Write(dCstq);
输出结果:1988年03月26日