Как определить, состоит ли QString из всех числовых символов? - PullRequest
15 голосов
/ 09 января 2012

Как лучше всего определить, состоит ли QString из простых чисел?

В библиотеке QString нет удобной функции.

Должен ли я перебирать каждого персонажа, по одному, или есть более элегантный способ, о котором я не думал?

Ответы [ 3 ]

25 голосов
/ 09 января 2012

Вы можете использовать регулярное выражение , например:

QRegExp re("\\d*");  // a digit (\d), zero or more times (*)
if (re.exactMatch(somestr))
   qDebug() << "all digits";
20 голосов
/ 15 декабря 2014

QString::​toInt - это то, что вы ищете.

int QString::​toInt(bool * ok = 0, int base = 10) const

Возвращает строку, преобразованную в int с использованием base base, который по умолчанию равен 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
2 голосов
/ 19 ноября 2016

мы можем перебирать каждый символ, как этот код:

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...