void fun_QVariant(){
/*
* 1. Algorithms
*/
double a=-19.3, b=9.7;
double c = qAbs(a);
double max = qMax(b, c);
int bn = qRound(b);
int cn = qRound(c);
qDebug()<<"a="<<a;
qDebug()<<"b="<<b;
qDebug()<<"c=qAbs(a)="<<c;
qDebug()<<"qMax(b,c)="<<max;
qDebug()<<"bn=qRound(b)="<<bn;
qDebug()<<"cn=qRound(c)="<<cn;
qSwap(bn,cn);
qDebug()<<"qSwap(bn,cn):"<<"bn="<<bn<<" cn="<<cn;
/*
* 2. basic expressions=expressions+quantifiers+assertions
*/
/*
* 2.1 E* 匹配0次或多次
*/
QString mStr = "abcdefgh";
QRegExp exp1("[a-z]*");
if(exp1.exactMatch(mStr))
{
qDebug() << "exp1: True";
}
else {
qDebug() << "exp1: False";
}
/*
* 2.2 Qt::CaseInsensitive忽略大小写
*/
QRegExp exp2("[A-Z]*", Qt::CaseInsensitive);
if(exp2.exactMatch(mStr))
{
qDebug() << "exp2: True";
}
else {
qDebug() << "exp2: False";
}
/*
* 2.3 [^] 取反
*/
QRegExp exp3("[^A-Z0-9]*");
if(exp3.exactMatch(mStr))
{
qDebug() << "exp3: True";
}
else {
qDebug() << "exp3: False";
}
/*
* 2.4 E? 匹配0次或1次
*/
QRegExp exp4("abcdefgh[a-z]?");
if(exp4.exactMatch(mStr))
{
qDebug() << "exp4: True";
}
else {
qDebug() << "exp4: False";
}
/*
* 2.5 E+ 匹配1次或多次
*/
QRegExp exp5("abcdefgh[a-z]+");
if(exp5.exactMatch(mStr))
{
qDebug() << "exp5: True";
}
else {
qDebug() << "exp5: False";
}
/*
* 2.6 E{n} E{m,n} 匹配n次
*/
QRegExp exp6("abcdefgh{1}");
if(exp6.exactMatch(mStr))
{
qDebug() << "exp6: True";
}
else {
qDebug() << "exp6: False";
}
/*
* 2.7 [&] 断言结束符
*/
QRegExp exp7("[a-z]+h$");
if(exp7.exactMatch(mStr))
{
qDebug() << "exp7: True";
}
else {
qDebug() << "exp7: False";
}
/*
* 2.8 [\b] 断言单词边界 [\B] 断言非单词边界
*/
// QRegExp exp8("^[a-z]*\b");
// if(exp8.indexIn("ah", 0) != -1)
// {
// qDebug() << "exp8: True";
// }
// else {
// qDebug() << "exp8: False";
// }
/*
* 2.9 (?=E) 表示表达式后紧随E才匹配
*/
QRegExp exp9("[a-z].*(?=h)");
if(exp9.indexIn(mStr, 0) != -1)
{
qDebug() << "exp9: True";
}
else {
qDebug() << "exp9: False";
}
/*
* 2.10 (?!E) 表示表达式后不跟随E才匹配
*/
QRegExp exp10(".*(?!m)");
if(exp10.indexIn(mStr, 0) != -1)
{
qDebug() << "exp10: True";
}
else {
qDebug() << "exp10: False";
}
}
代码输出:
a= -19.3
b= 9.7
c=qAbs(a)= 19.3
qMax(b,c)= 19.3
bn=qRound(b)= 10
cn=qRound(c)= 19
qSwap(bn,cn): bn= 19 cn= 10
exp1: True
exp2: True
exp3: True
exp4: True
exp5: False
exp6: True
exp7: True
exp9: True
exp10: True