创建自己的输入蒙版

Creating own input masks

本文关键字:输入 自己的 创建      更新时间:2023-10-16

基本上我想验证一个字符串对掩码,这是在数据库中,但是验证它我需要分配一个规则掩码即[D] = 0<=10。所以我所做的就是检索那个蒙版并从字母中提取[]并将它们存储在两个不同的向量中,所以我的问题是,你能否用向量

为不同的单元格分配一个规则

。e

a[0] = 0<=10
a[1] = "H"

下面是我的代码,请记住,顶部的字符串不是来自DB,它只是我创建的字符串,假设它来自DB,因为过程将是相同的

string s("[sh][a][mar][i]");
    vector< vector<char> > Vect;
    vector<char> vect;
    int i = 0;
    while(i < s.size()) {
        if(s[i]=='[') {
            i++;
            vect.push_back(s[i]);
            i++;
        }
        else if(s[i] == ']') {
            i++;
            Vect.push_back(vect);
            vect.clear();
        }
        else {
            vect.push_back(s[i]);
            i++;
        }
    }

    vector< vector<char> >::iterator it;
    vector<char>::iterator itera;
    vector<std::string> vectString;

    for (it = Vect.begin() ; it != Vect.end() ; ++it ) {
        string a;
        for (itera = it->begin() ; itera != it->end() ; ++itera) {
            cout << *itera;
            a += *itera;
        }
        vectString.push_back(a);
    }

我不太明白你的问题,但我可以提出以下建议:

  • 不要使用巨大的if-else-if语句,尝试使用std::string::find和std::string::substr来提取元素

  • 我真的不明白你为什么要把std::string转换成char,然后再反转它。使用std::string::find和std::string::substr一步获取vectString可能是一个更好的主意。

std::string提供了强大的函数,如果您不熟悉它,您可能想看看:http://www.cplusplus.com/reference/string/string/

您想要验证给定字符串是否可以被某些正则表达式接受?如果是这样的话,你为什么不使用一些正则表达式对象来代表你的规则,然后检查它的匹配结果是否等于你的原始字符串?