如何分割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。你可能不需要这个。
我正在尝试解析这种形式的 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。你可能不需要这个。