我需要创建一个函数来检查我作为参数发送的字符串是否有前4个字符作为字母,最后3个是数字,并且它正好有7个字符。我该如何编写这个函数?
答案 0 :(得分:1)
最简单的解决方案是循环检查每个字符的字符串,例如:
#include <string>
#include <cctype>
bool is4LettersAnd3Digits(const std::string &s)
{
if (s.length() != 7)
return false;
for (int i = 0; i < 4; ++i) {
if (!std::isalpha(s[i]))
return false;
}
for (int i = 4; i < 7; ++i) {
if (!std::isdigit(s[i]))
return false;
}
return true;
}
可替换地:
#include <string>
#include <algorithm>
#include <cctype>
bool is4LettersAnd3Digits(const std::string &s)
{
return (
(s.length() == 7) &&
(std::count_if(s.begin(), s.begin()+4, std::isalpha) == 4) &&
(std::count_if(s.begin()+4, s.end(), std::isdigit) == 3)
);
}
或者,如果使用C ++ 11或更高版本:
#include <string>
#include <algorithm>
#include <cctype>
bool is4LettersAnd3Digits(const std::string &s)
{
if (
(s.length() == 7) &&
std::all_of(s.begin(), s.begin()+4, std::isalpha) &&
std::all_of(s.begin()+4, s.end(), std::isdigit)
);
}