一种可能的解决方案是使用正则表达式,如下所示:
#include
#include
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString str = "s150 dd300s150 d301d302s15";
QRegExp rx("d(\\d+)");
QList list;
int pos = 0;
while ((pos = rx.indexIn(str, pos)) != -1) {
list << rx.cap(1).toInt();
pos += rx.matchedLength();
}
qDebug()<
return a.exec();
}
输出:
(300, 301, 302)
由于@IlBeldus的评论,并根据该信息QRegExp将deprecated,所以我建议使用QRegularExpression的解决方案:
另一种解决方案:
QString str = "s150 dd300s150 d301d302s15";
QRegularExpression rx("d(\\d+)");
QList list;
QRegularExpressionMatchIterator i = rx.globalMatch(str);
while (i.hasNext()) {
QRegularExpressionMatch match = i.next();
QString word = match.captured(1);
list << word.toInt();
}
qDebug()<
输出:
(300, 301, 302)