如何检查字符串是否有一定数量的字母和数字?

时间:2017-02-26 03:46:52

标签: c++ string function

我需要创建一个函数来检查我作为参数发送的字符串是否有前4个字符作为字母,最后3个是数字,并且它正好有7个字符。我该如何编写这个函数?

1 个答案:

答案 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)
    );
}