QT常用算法
// todo qt常用算法
# include <QApplication>
# include <QDebug>
using namespace std;
int main(int argc, char *argv[]){
QApplication a(argc, argv);
MainWindow w;
w.show();
double x=-99.9;
double y=32.1;
double r=qAbs(x);//求绝对值
qDebug()<<"qAbs(x):"<<r; //99.9
double r1=qRound(x);//四舍五入
qDebug()<<"qRound(y):"<<r1; //-100
double r2=qFloor(x);//向下取整
qDebug()<<"qFloor(x):"<<r2; //-100
double r3=qCeil(x);//向上取整
qDebug()<<"qCeil(x):"<<r3; //-99
double r4=qMin(x,y);//求最小值
qDebug()<<"qMin(x,y):"<<r4; //-99.9
double r5=qMax(x,y);//求最大值
qDebug()<<"qMax(x,y):"<<r5; //32.1
int i=10;
int j=5;
double r6=qPow(i,j);//求x的y次方
qDebug()<<"qPow(x,y):"<<r6; //100000
double r7=qSqrt(i);//求平方根
qDebug()<<"qSqrt(x):"<<r7; //3.16228
//交换
qSwap(i,j);
qDebug()<<"i:"<<i<<" j:"<<j; //5 10
return a.exec();
}
正则表达式
基本元字符
.:匹配除换行符外的任何单个字符。
^:匹配字符串的开头。
$:匹配字符串的结尾。
*:匹配前面的字符零次或多次。
+:匹配前面的字符一次或多次。
?:匹配前面的字符零次或一次。
{n}:匹配前面的字符恰好n次。
{n,}:匹配前面的字符至少n次。
{n,m}:匹配前面的字符至少n次,但不超过m次。
[]:匹配字符集中的任意一个字符。例如,[abc]匹配a、b或c。
[^]:匹配不在字符集中的任意一个字符。例如,[^abc]匹配除了a、b、c之外的任意字符。
|:或操作符,匹配两者中的任意一个。例如,a|b匹配a或b。
预定义字符类
\d:匹配任何数字字符,等价于[0-9]。
\D:匹配任何非数字字符,等价于[^0-9]。
\w:匹配任何字母、数字或下划线字符,等价于[a-zA-Z0-9_]。
\W:匹配任何非字母、数字或下划线字符,等价于[^a-zA-Z0-9_]。
\s:匹配任何空白字符,包括空格、制表符、换页符等。
\S:匹配任何非空白字符。
匹配电子邮件地址
\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b
匹配URL
https?:\/\/(www\.)?[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}(\/[a-zA-Z0-9.-]*)*\/?
匹配日期(YYYY-MM-DD)
\b\d{4}-\d{2}-\d{2}\b
匹配手机号
^1[3578]\d{9}$
//todo 正则
# include <QApplication>
# include <QDebug>
#include <regex>
using namespace std;
int main(int argc, char *argv[]){
QApplication a(argc, argv);
MainWindow w;
w.show();
QString Nu="10500591216";
std::regex pattern("^1[3578]\\d{9}$");
string N=Nu.toStdString();//转换为string类型
bool bRet= std::regex_match(N,pattern);
if(bRet){
qDebug()<<"匹配成功";
}else{
qDebug()<<"匹配失败";
}
return a.exec();
}