2011-12-06 142 views
3

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

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

˚F523/845/1 524/846/2 562/847/3 564/848/4

我需要每个号码seperately到放入数组中。

一些代码....

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

      x = line.split(sep); 

任何指针?

干杯

回答

6

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

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

然后x将每一个数字。

+0

非常感谢。我曾尝试“||”。正则表达式很强大,但是太令人沮丧了。干杯。 – Ponml

1

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

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

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

Regards !.