目录
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()<<"非中文或非数字";
}
}