如何分割QString

How to split QString

我正在尝试解析这种形式的 QString

QString str = "34 t:513 l:21 o:0x0147 [FBI] Miscellaneous No. : 89f2aad996ae4a5c961a 123 532af2";
QRegExp tagExp(":");
QStringList firstList = str.split(tagExp);

不过我只需要"9f2aad996ae4a5c961a 123 532af2"。那么是否可以得到": "之后的子串?

如果我理解正确的话,您需要列表的最后一个元素(在最后一个“:”之后)。您可以执行以下操作:

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

函数 takeLast 获取最后一个字符串 returns 并将其从列表中删除。如果你不想从列表中删除最后一个元素,你可以这样做:

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

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

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

但第一个选项是最安全的,因为它可以更好地解决 "out of bounds" 问题。

您还可以使用:

requiredPart = requiredPart.trimmed();

删除开头/结尾的任何 space。或者更进一步使用:

requiredPart = requiredPart.simplified();

去除字符串中多余的白色-space。你可能不需要这个。