2016-04-14 90 views
0

我试图解析QString如何分割的QString

34吨513 L:21○:0x0147 [FBI]杂项号:89f2aad996ae4a5c961a 123 532af2

QRegExp tagExp(":"); 
QStringList firstList = str.split(tagExp); 

不过,我只需要“ 9f2aad996ae4a5c961a 123 532af2“。所以是有可能得到的休息串“:”

+0

我会像'str.split(“No。:”)“一样分割它,并将第二个元素放在列表中。 – vahancho

+2

它取决于要分析的行的预期格式。 (例如,总是有一个“:”,并且是随机文本之前的文本或者是它的结构)。如果是关于最后一个“:”,我会去lastIndexOf(“:”)和QString :: mid()。 –

回答

1

如果我正确理解你想要的列表的最后一个元素(在最后的“:”你可以做以下...

QRegExp tagExp(":"); 
QStringList firstList = str.split(tagExp); 
// Get the last string from list: 
// "34 t" 
// "513 l" 
// "21 o" 
// "0x0147 [FBI] Miscellaneous No. " 
// "89f2aad996ae4a5c961a 123 532af2" <<-- this is the last element in list 
QString requiredPart = firstList.takeLast(); 

的functino takeLast获取最后一个字符串并返回它也从列表中删除它。如果你不想从你可以做这样的事情列表中删除最后一个元素:

QString requiredPart = firstList.value(firstList.length() - 1); 

QString requiredPart = firstList.at(firstList.length() - 1); 

QString requiredPart = firstList[firstList.length() - 1]; 

但是第一个选项是最安全的,因为它涵盖了你的“出界”的问题更好。

您还可以使用:

requiredPart = requiredPart.trimmed(); 

在开始/结束删除任何空格。或者继续使用:

requiredPart = requiredPart.simplified(); 

要删除字符串中多余的空格..可能你不需要这个。