我需要验证字符串。该字符串的格式类似于“V02:01:02:03:04”。
我正在尝试做的事情:
1)我想检查是否提供了正确的长度
2)第一个字符是“V”
3)所有其他字符都是 2 个字母数字,并用冒号分隔并位于正确的位置。
4)没有空格标签等。c
4)想不出更多的验证。
到目前为止我所做的
1) 函数很容易检查 len 和 first char,而不是验证 first 之后的后续字符不包含 alpha 或空格。但是我对如何检查冒号位置和每个冒号后的 2 个字母字符有点卡住了。
下面是我的尝试。
int firmwareVerLen = 15;
const std::string input = "V02:01:02:03:04"; // this is the format string user will input with changes only in digits.
bool validateInput( const std::string& input )
{
typedef std::string::size_type stringSize;
bool result = true ;
if( firmwareVerLen != (int)input.size() )
{
std::cout <<" len failed" << std::endl;
result = false ;
}
if( true == result )
{
if( input.find_first_of('V', 0 ) )
{
std::cout <<" The First Character is not 'V' " << std::endl;
result = false ;
}
}
if( true == result )
{
for( stringSize i = 1 ; i!= input.size(); ++ i )
{
if( isspace( input[i] ) )
{
result = false;
break;
}
if( isalpha(input[i] ) )
{
cout<<" alpha found ";
result = false;
break;
}
//how to check further that characters are digits and are correctly separated by colon
}
}
return result;
}