1、使用 QRegularExpression
带入正则表达式来匹配目标字符串是否符合数字结构,以此来判断,代码如下:
cpp
bool isPureNumber(const QString &arg1) {
// 使用正则表达式来检查是否为纯数字 0-9
QRegularExpression re("^\\d+$");
// 匹配整数和小数,允许负号开头
//QRegularExpression re("^-?\\d*\\.?\\d+$");
return re.match(arg1).hasMatch();
}
2、使用 QString::toDouble() 或 QString::toInt()
函数带入一个bool类型的参数地址可以得到转换结果,以此来判断是否是数字。
cpp
bool isNumber(const QString &arg1) {
bool ok;
arg1.toDouble(&ok); // 转换为 double 以检查有效性
// arg1.toInt(&ok); // 转换为 int 以检查有效性
return ok;
}
3、使用 QString::contains() 和 QRegularExpression配合
使用了QRegularExpression类,同样关键在于正则表达式,也是以此来匹配,只不过这里使用contains函数来检测结构。
cpp
bool isPureNumber(const QString &arg1) {
// 使用正则表达式匹配
//return !arg1.isEmpty() && arg1.contains(QRegularExpression("^\\d+$")); //0-9
return !arg1.isEmpty() && arg1.contains(QRegularExpression("^-?\\d*\\.?\\d+$"));
}
4、结语
以上就是本人一般会用到的判断一个字符串是否是数字的方法了,这里全部封装好了函数,可以根据实际情况做稍微修改来达到你自己的预期效果。