如何判断一字符串中包含日期格式的字符串

IT流渊 2010-08-17 10:31:09
比如:一字符串:http://news.sina.com.cn/c/2010-08-12/004720877716.shtml


可以判断是一段字符串是可转成日期的 就是2010-08-12 说是真的

字符串:http://survey.news.sina.com.cn/list.php?channel=news&dpc=1

没有一段字符串 可以转成日期格式的 则是假的
...全文
431 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenyang2000 2010-08-17
  • 打赏
  • 举报
回复
截取字符 然后将字符进行日期的正则表达式判断
IT流渊 2010-08-17
  • 打赏
  • 举报
回复
恩 谢谢 Peter200694013兄 看来也得好好学学正则表达式了
这个东东真是挺好用的
Peter200694013 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 w3031213101 的回复:]
如果是
这样的格式 又该 怎么判断呢?
http://news.qq.com/a/20100817/000976.htm


麻烦大家再 看看~~
[/Quote]


Regex reg1 = new Regex(@"(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229)");
String str2 = "http://news.qq.com/a/20100817/000976.htm";

if(reg1.IsMatch(str2))
Console.WriteLine("True");
else
Console.WriteLine("False");


如果两个同时判断,可以将两个正则合并或if(reg.IsMatch(str) && reg1.IsMatch(str))
wilensky 2010-08-17
  • 打赏
  • 举报
回复
正则,正则
IT流渊 2010-08-17
  • 打赏
  • 举报
回复
如果是
这样的格式 又该 怎么判断呢?
http://news.qq.com/a/20100817/000976.htm


麻烦大家再 看看~~
V-Far 2010-08-17
  • 打赏
  • 举报
回复
正则,会比较好用.
DateTime.TryParse也是比较好的.判断一下返回值是否为true或者直接判断out dt是否还是默认的就好了
IT流渊 2010-08-17
  • 打赏
  • 举报
回复
非常感谢大家 都是高手哇~~
q107770540 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 peter200694013 的回复:]

引用 5 楼 q107770540 的回复:
C# code

protected void Page_Load(object sender, EventArgs e)
{
string s1 = "http://news.sina.com.cn/c/2010-08-12/004720877716.shtml";
string s2 = "http://survey.……


……
[/Quote]
只是提供一种思路参考
可以针对不同格式的DATETIME类型
wwfgu00ing 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 peter200694013 的回复:]
C# code

Regex reg = new Regex(@"(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30……
[/Quote]

正解
Peter200694013 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 q107770540 的回复:]
C# code

protected void Page_Load(object sender, EventArgs e)
{
string s1 = "http://news.sina.com.cn/c/2010-08-12/004720877716.shtml";
string s2 = "http://survey.……
[/Quote]

try
{
DateTime dt = DateTime.Parse(s1);
}
catch
{
i++;
}
-------------------
这个可以改成:
DateTime dt;
if(DateTime.TryParse(str,out dt))
i++;

//我觉得这样比较好
q107770540 2010-08-17
  • 打赏
  • 举报
回复

protected void Page_Load(object sender, EventArgs e)
{
string s1 = "http://news.sina.com.cn/c/2010-08-12/004720877716.shtml";
string s2 = "http://survey.news.sina.com.cn/list.php?channel=news&dpc=1";
bool b1= check(s1);
bool b2= check(s2);
Response.Write(b1.ToString()); //true;
Response.Write(b2.ToString()); //false;

}
bool check(string s)
{
s = s.Replace("http://", "");
string[] ss = s.Split(new char[] { '/', '.', '?', '&' ,'='});
int i = 0;
foreach (string s1 in ss)
{
try
{
DateTime dt = DateTime.Parse(s1);
}
catch
{
i++;
}
}
if (i == ss.Length)
{
return false;
}
else
{
return true;
}

}
Peter200694013 2010-08-17
  • 打赏
  • 举报
回复

Regex reg = new Regex(@"(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)");

String str = "http://news.sina.com.cn/c/2010-08-12/004720877716.shtml";

if (reg.IsMatch(str))
Console.WriteLine("True");
else
Console.WriteLine("False");
even0220 2010-08-17
  • 打赏
  • 举报
回复
围观。
hujun4561812 2010-08-17
  • 打赏
  • 举报
回复
日期只是 yyyy-MM-dd格式的么
Peter200694013 2010-08-17
  • 打赏
  • 举报
回复
日期只是 yyyy-MM-dd格式的么?

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧