判断当前的字符串是否存在中文

 参考文章:https://www.cnblogs.com/dragonsuc/p/4360135.html

//匹配中文字符,找到图片文件,不允许当前的路径存在中文字符

//以QT 为例

int PropertyScreenWgt::checkFilePath(QString &str)
{
    QString reg_PATTERN_STRING = QObject::tr("[\u4e00-\u9fa5]");

    int NTH = 0;
    //正则表达式
    QRegExp regExp;
    //pos代表位置
    //regcount代表匹配成功的次数
    int pos, regcount;
    pos = regcount = 0;


    regExp.setPattern(reg_PATTERN_STRING);
    //将匹配设置为最小(短)匹配  
    regExp.setMinimal(true);

    //此处的参数,记得要为const char *
    QString txtStr = QObject::tr(str.toUtf8().constData());


    //开始匹配  
    while ((pos = regExp.indexIn(txtStr, pos)) != -1)
    {
        QString str = regExp.cap(NTH);
        pos += regExp.matchedLength();
        regcount++;


        //判断有中文存在,即可停止检索,要是你想要检索出当前的字符串一共有多少个字符串的,可以继续比较
        if (regcount > 0)
        {
            break;
        }
    }

//匹配的开始位置int regStart = txtStr.indexOf(QRegExp(reg_PATTERN_STRING));
qDebug() << regStart;

    return regcount;
}

你可能感兴趣的:(QT)