2016-04-16 5 views
4

Ich suche einen QString zu teilen. Es gibt mehrere Wörter in der QString, getrennt durch eine oder mehrere der folgenden Symbole (!):Qt - Aufteilen eines QString mit verschiedenen Arten von Leerzeichen als Trennzeichen

  • Leerzeichen
  • Registerkarte
  • CR
  • LF

Ich bin auf der Suche um nur die Wörter zu extrahieren. Im Grunde versuche ich, das Verhalten der Python str.split() - Funktion zu replizieren.

Ich weiß, dass ich einen regulären Ausdruck verwenden kann, um dies zu erreichen, aber wie würde es aussehen? Andere einfache Methoden, um dies zu erreichen, sind ebenfalls willkommen.

+2

Also, versuchte '' \\ s + '' noch? –

+0

Ich habe diese besondere Regexp, ja gefunden. Aber ich bin unsicher, ob es alle Fälle abdeckt. – user129186

+1

Es scheint genug zu sein. Versuchen Sie 'QStringList list = str.split (QRegExp (" \\ s + "), QString :: SkipEmptyParts);'. Sonst, probiere '\\ W +' ('\ W' stimmt mit Nicht-Wort-Zeichen überein und wird in viel mehr Fällen geteilt als' \ s') –

Antwort

5

Beachten Sie, dass CR, LF und Tab bereits Leerzeichen sind. Wenn Sie ein Leerzeichen übereinstimmen müssen Sie auf einem shorthand character class \s verlassen können:

\s Spiele ein Leerzeichen (QChar::isSpace()). So

, verwenden Sie dann

QStringList list = str.split(QRegExp("\\s+"), QString::SkipEmptyParts); 

Wenn Sie eine Zeichenfolge mit bestimmten Zeichen zu spalten, eine character class verwenden.

[...] Zeichensätze können in eckigen Klammern dargestellt werden, ähnlich wie bei Vollregexps. Innerhalb der Zeichenklasse hat Backslash wie außerhalb keine besondere Bedeutung.

Dann versuchen

QStringList list = str.split(QRegExp("[\r\n\t ]+"), QString::SkipEmptyParts); 

Sie können später die Liste erweitern, wenn die Anforderungen ändern.

Verwandte Themen