Wenn ich Sie richtig verstehe Sie das letzte Element der Liste soll (nach dem letzten „:“. Können Sie Folgendes tun ...
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();
die functino takeLast bekommt die letzte String und gibt ihn und entfernt sie auch aus der Liste Wenn Sie das letzte Element aus der Liste entfernen möchte nicht, dass Sie so etwas wie tun:.
QString requiredPart = firstList.value(firstList.length() - 1);
oder
QString requiredPart = firstList.at(firstList.length() - 1);
oder
QString requiredPart = firstList[firstList.length() - 1];
Aber die erste Option ist die sicherste, wie es Ihnen für „außerhalb der Grenzen“ Probleme besser abdeckt.
Sie können auch verwenden:
requiredPart = requiredPart.trimmed();
alle Leerzeichen am Anfang/Ende zu entfernen. Oder gehen Sie weiter und verwenden Sie:
Um überschüssigen Leerraum innerhalb der Zeichenfolge zu entfernen .. wahrscheinlich brauchen Sie dies nicht.
Ich würde es wie 'str.split (" Nr.: ") Teilen;' und das zweite Element in der Liste nehmen. – vahancho
Es hängt von den erwarteten Formaten der Zeilen ab, die Sie analysieren möchten. (z. B. gibt es immer ein ":", und ist der Text vor dem zufälligen Text oder hat er eine Struktur). Wenn es um das letzte ":" geht, würde ich nach lastIndexOf (":") und QString :: mid() gehen. –