3

我无法正确拆分 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);

任何指针?

干杯

4

3 回答 3

7

像这样更改您的正则表达式:

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

然后x将有每个数字。

于 2011-12-06T08:57:36.333 回答
1

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

您可以将搜索文本放在那里并使用 RegEx 来查看何时匹配。

于 2011-12-06T08:48:34.630 回答
-1

您可以使用 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/

问候!。

于 2012-12-03T16:16:18.183 回答