QString分割多个分隔符

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

有什么建议吗?

谢谢。

3个回答

7

请将您的正则表达式更改为以下内容:

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

这样,x 将会得到每一个数字。


非常感谢。我尝试过“||”。正则表达式很强大,但也很令人沮丧。干杯。 - Ponml

1

我发现交互式地尝试正则表达式非常有用。现在有很多在线工具,例如:http://gskinner.com/RegExr/

你可以把你的搜索文本放在那里,然后玩弄正则表达式,看看匹配了什么。


-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/

祝好!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接