我有一个QString,里面有一些数字,例如
first_34.33string
second-23.4string // In this case number is negative
如何从字符串中提取数字?
编辑:
此功能似乎有效,在回复中使用regexp:
float getNumberFromQString(const QString &xString)
{
QRegExp xRegExp("(-?\\d+(?:[\\.,]\\d+(?:e\\d+)?)?)");
xRegExp.indexIn(xString);
QStringList xList = xRegExp.capturedTexts();
if (true == xList.empty())
{
return 0.0;
}
return xList.begin()->toFloat();
}
答案 0 :(得分:4)
这适用于有效数字:QRegExp("(-?\\d+(?:[\\.,]\\d+(?:e\\d+)?)?)")
编辑:对不起,搞砸了括号,现在应该可以了。
答案 1 :(得分:1)
我会为此写一个简单的函数:
static double extractDouble(const QString &s)
{
QString num;
foreach(QChar c, s) {
if (c.isDigit() || c == '.' || c == '-') {
num.append(c);
}
}
bool ok;
double ret = num.toDouble(&ok);
if (ok) {
return ret;
} else {
throw "Cannot extract double value";
}
}