web-dev-qa-db-ja.com

Qt-いくつかのタイプの空白を区切り文字として使用して、QStringを分割します

QStringを分割したいと思っています。 QStringには、次の記号の1つ以上(!)で区切られたいくつかの単語があります。

  • 空白
  • タブ
  • CR
  • LF

単語だけを抽出したいと思っています。基本的に、私はPython str.split()関数の動作を複製しようとしています。

これを実現するために正規表現を使用できることは知っていますが、どのようになりますか?これを達成するための他の簡単な方法も歓迎します。

9
user129186

CR、LFおよびタブすでに空白であることに注意してください。空白を一致させる必要がある場合は、 省略文字)を使用できます。クラス_\s_

_\s_空白文字に一致します( QChar::isSpace() )。

だから、それを使用します

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

文字列を特定の文字で分割する場合は、 文字クラス を使用してください。

_[...]_文字のセットは、完全な正規表現と同様に角括弧で表すことができます。文字クラス内では、外部と同様に、円記号には特別な意味はありません。

次に、試してみてください

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

後で要件が変更されたときに、リストを拡大できます。

9