【问题标题】:How to isolate an integer in a QString如何隔离QString中的整数
【发布时间】:2017-06-08 06:55:21
【问题描述】:

我有一个 Gcode 的 QString,看起来像这样:

T<some number> <and anything might come after it>

目前,我正在使用myString.midRef(1,1).toInt() 来获取我想要的数字(我不关心该行的其余部分)。但是,如果有两位数,这将不起作用,如下所示:

T12 ;blah blah blah

除了按索引搜索以查看数字停止的位置之外,还有其他更好/更好的方法吗?

  • 号码前总会有一个T
  • 如果数字后面有任何其他文本,分号后面总会有一个分号,但数字和分号之间不能有空格。
  • 数字后面可能有也可能没有。

【问题讨论】:

  • 你有它。使用分号作为分隔符。

标签: qt g-code


【解决方案1】:

使用正则表达式提取数字模式,例如

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);
}

注意事项:

  1. T\d+ 匹配以 T 开头的模式,后跟一个或多个数字。
  2. \s*;{1}.|$ 匹配零个或多个空格,后跟分号加上任何字符 OR 最后一个字符中没有。

请注意,在上述规则中,"T123 ""T123\n" 不会匹配模式。如果要允许空白,请使用以下内容:

QRegExp("T\\d+\\s*(;{1}.|$)")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2016-11-27
    相关资源
    最近更新 更多