checkFormat(string &s)
{
}
string s是一个表示日期的字符串。
我想比较字符串s,以确定它是否与“yyyy:mm :: dd”有关。
我该怎么办?
将char与char进行比较?如果字符串是“600:12:01”怎么办?
抱歉我的英语不好。
答案 0 :(得分:4)
不要使用正则表达式。使用strptime()
,用于解析时间字符串(因此名称为str p time
,字符串 - >解析 - >时间)。正则表达式无法确定2013:2:29
无效。
答案 1 :(得分:2)
以下是算法的一个想法:
如果任一测试失败,请返回false
。如果您完成所有操作,请返回true
。
当然,这不会验证值的范围。此外,你并没有真正“比较”,你正在“验证”。
答案 2 :(得分:1)
您可以使用Boost Regex检查字符串是否与您的模式匹配。
答案 3 :(得分:1)
这是正则表达式的工作。由于您使用的是C ++,Boost.Regex是一种选择。
答案 4 :(得分:0)
最简单的方法是将字符串切成年,月,日的组成部分并进行比较。
答案 5 :(得分:0)
您的编译器是否支持正则表达式,即您是否使用了符合C ++ 11标准的编译器?这将使任务更多更容易......否则您可能想诉诸Boost.Regex。
假设您可以使用C ++ 11,以下代码应该执行您想要的操作(尽管未经测试):
std::regex rx("\\d{4}:\\d{2}:\\d{2}");
return regex_match(s.begin(), s.end(), rx);
John Cook撰写了an introduction into C++ regular expressions。如果您的编译器支持C ++ 11,只需将每个std::tr1
替换为std
。