判断a QString是否仅由数字组成的最佳方法是什么?
库中似乎没有便利功能QString.
我是否必须迭代每个角色,一次一个,或者是否有一种我没有想过的更优雅的方式?
sth*_*sth 27
您可以使用正则表达式,如下所示:
QRegExp re("\\d*"); // a digit (\d), zero or more times (*)
if (re.exactMatch(somestr))
qDebug() << "all digits";
Run Code Online (Sandbox Code Playgroud)
Ale*_*der 21
QString::?toInt 是你在找什么.
int QString::?toInt(bool * ok = 0, int base = 10) const
Run Code Online (Sandbox Code Playgroud)
返回使用基数转换为int的字符串,默认情况下为10,必须介于2和36之间,或者为0.如果转换失败,则返回0.如果发生转换错误,*ok设置为false; 否则*ok设置为true.
示例:
QString str = "FF";
bool ok;
int hex = str.toInt(&ok, 16); // hex == 255, ok == true
int dec = str.toInt(&ok, 10); // dec == 0, ok == false
Run Code Online (Sandbox Code Playgroud)
我们可以像下面的代码一样迭代每个字符:
QString example = "12345abcd";
for (int i =0;i<example.size();i++)
{
if (example[i].isDigit()) // to check if it is number!!
// do something
else if (example[i].isLetter()) // to check if it is alphabet !!
// do something
}
Run Code Online (Sandbox Code Playgroud)