Qt 判断QString中是否有汉字、字母和数字

目录

1、判断QString是否有汉字

2、判断QString是否是数字

3、判断QString是否是纯英文

4、判断QString是否是纯数字和

5、判断QString是否是纯数字和,如果有.仅有一个

6、判断QString是否是英文或数字

7、判断QString是否是中文或数字

1、判断QString是否有汉字

第一种方法,逐一取中QString的字符,进行判断。
   QString str="123我456";
    int nCount = str.count();


    for(int i = 0 ; i < nCount ; i++)
    {
        QChar cha = str.at(i);
        ushort uni = cha.unicode();
        if(uni >= 0x4E00 && uni <= 0x9FA5)
        {
            //这个字符是中文


            qDebug()<<"中文:"<<uni;//unicode编码 25105-"我"
        }
    }
第二种方法,是利用强大的正则表达式进行判断。
 
QString str="123我456";
 bool b = str.contains(QRegExp("[\\x4e00-\\x9fa5]+"));
    if(b)
    {
        //存在中文
        qDebug()<<"存在中文";
    }

2、判断QString是否是数字

第一种方法: 判断字符串否为数字,其实Qt有一个函数toDouble/toInt等等可以实现这个功能,如下:
 
   //QString str = "1234.56";//double类型
    QString str = "123";  //int类型
    //QString str = "我是123";
    bool ok;
    //double val = str.toDouble(&ok); // ok为true说明str为数字,为false说明str为非数字(double类型)
    int val = str.toInt(&ok); // ok为true说明str为数字,为false说明str为非数字(int类型 )

    if(ok)
       qDebug()<<"str是数字";
    else
        qDebug()<<"str非数字";
第二种方法
 QString str="abc123";
    QByteArray ba = str.toLatin1();
    const char *s = ba.data();


    while(*s)
    {
        if(*s>='0' && *s<='9')
        {
            qDebug()<<"数字";
        }
        else
        {
            qDebug()<<"非数字";
        }
        s++;
    }

3、判断QString是否是纯英文

   QString str="abc12def";
    QByteArray ba = str.toLatin1();
    const char *s = ba.data();
    while(*s)
    {
        if((*s>='A' && *s<='Z') || (*s>='a' && *s<='z'))
        {
            qDebug()<<"英文";
        }
        else
        {
            qDebug()<<"非英文";
        }
        s++;
    }

4、判断QString是否是纯数字和

  
  QString str="12@3.4#56";
    QByteArray ba = str.toLatin1();
    const char *s = ba.data();
    bool bret = true;
    while(*s)
    {
        if(*s<'0' || *s>'9')
        {


            if(*s!='.')
            {
                qDebug()<<"不是纯数字和";
                bret = false;
                break;
            }
        }
        s++;
    }

5、判断QString是否是纯数字和,如果有.仅有一个

    QString str="12.34.56#78";
    QByteArray ba = str.toLatin1();
    const char *s = ba.data();
    bool bret = true;
    int iPoint=0;
    while(*s)
    {
        if(*s<'0' || *s>'9')
        {
            if(*s!='.')
            {
                qDebug()<<"不是纯数字和";
                bret = false;
                break;
            }
            else
            {
                iPoint++;
                if(iPoint>=2)
                {
                    qDebug()<<"不是纯数字和";
                    bret = false;
                    break;
                }
            }
        }
        s++;
    }

6、判断QString是否是英文或数字

  //是否是英文或数字
    QString str="123我";
    QByteArray ba = str.toLatin1();
        const char *s = ba.data();
        bool bret = true;
        while(*s)
        {
            if((*s>='A' && *s<='Z') || (*s>='a' && *s<='z') || (*s>='0' && *s<='9'))
            {
            qDebug()<<"英文或数字";
            }
            else
            {
                qDebug()<<"非英文或非数字";
                bret = false;
                break;
            }
            s++;
        }

7、判断QString是否是中文或数字

   QString str="123我abc";
    int nCount = str.count();
    for(int i=0; i<nCount; ++i)
    {
        QChar cha = str.at(i);
        ushort uni = cha.unicode();
        if((uni >= 0x4E00 && uni <= 0x9FA5)  || (uni >= '0' && uni <= '9'))
        {
            qDebug()<<"中文或数字";
        }
        else
        {
            qDebug()<<"非中文或非数字";
        }
    }
  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷凝女子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值