我有一个Gcode的QString,如下所示:
T<some number> <and anything might come after it>
目前,我使用myString.midRef(1,1).toInt()
来获取我想要的数字(我不关心其余部分)。但是,如果有两位数字,这将无效:
T12 ;blah blah blah
除了按索引搜索索引以查看数字停止的位置之外,是否有更好/更好的方法?
T
。答案 0 :(得分:2)
使用正则表达式提取数字模式,例如
int ib, ie, n;
QStringRef num;
ib = str.indexOf(QRegExp("T\\d+(\\s*;{1}.|$)"));
if (ib >= 0) {
ib++;
ie = str.indexOf(";", ib);
n = ie >= ib ? ie - ib : -1;
num = str.midRef(ib, n);
}
注意:
T\d+
匹配模式以T
开头,后跟一个或多个数字。\s*;{1}.|$
匹配零个或多个空格后跟分号加上任何字符 OR 在最后一个字符中完全没有。请注意,在上述规则中,"T123 "
或"T123\n"
不符合该模式。如果要允许空格,请使用以下命令:
QRegExp("T\\d+\\s*(;{1}.|$)")