【问题标题】:QString splitting multiple delimitersQString拆分多个分隔符
【发布时间】:2011-12-06 08:33:11
【问题描述】:

我无法正确拆分 QString。除非我弄错了,否则对于多个分隔符,我需要一个正则表达式,而且我似乎无法弄清楚一个表达式,因为我对它们很陌生。

字符串是从文件中输入的文本:

f 523/845/1 524/846/2 562/847/3 564/848/4

我需要将每个数字分别放入一个数组中。

一些代码....

QStringList x;
QString line = in.readLine();
        while (!line.isNull()) {
            QRegExp sep("\\s*/*");

            x =  line.split(sep);

任何指针?

干杯

【问题讨论】:

    标签: regex qt split qstring


    【解决方案1】:

    像这样改变你的正则表达式:

    QRegExp sep("(\\s+|/)");

    然后x 将拥有每个数字。

    【讨论】:

    • 非常感谢。我试过“||”。正则表达式很强大,但是太令人沮丧了。干杯。
    【解决方案2】:

    我发现交互式地试用 RegEx 非常有用。现在甚至有很多在线工具,例如:http://gskinner.com/RegExr/

    您可以将搜索文本放在那里并使用正则表达式来查看何时匹配。

    【讨论】:

      【解决方案3】:

      您可以使用 strtok 函数,该函数将 QString 与一个或多个不同的标记分开。

      应该是这样的:

          QString a = "f 523/845/1 524/846/2 562/847/3 564/848/4";
          QByteArray ba = a.toLocal8Bit();
          char *myString = ba.data();
          char *p = strtok(myString, " /");
      
          while (p) {
              qDebug() << "p : " << p;
              p = strtok(NULL, " /");
          }
      

      您可以根据需要设置任意数量的令牌。有关更多信息,请访问此特定功能的 cplusplus 页面。 http://www.cplusplus.com/reference/cstring/strtok/

      问候!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-07
        • 1970-01-01
        • 1970-01-01
        • 2019-05-11
        • 2021-05-22
        相关资源
        最近更新 更多