2016-04-14 88 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(); 

要刪除字符串中多餘的空格..可能你不需要這個。