27

簡略化した文字列 lots\t of\nwhitespace\r\n がありますが、文字列内の他のスペースを削除する必要があります。

QString str = "  lots\t of\nwhitespace\r\n ";
str = str.simplified();

私はこれerase_all(str, " ");をブーストで行うことができますが、qtに留まりたいです。

4

4 に答える 4

63
str = str.simplified();
str.replace( " ", "" );

1 つ目はすべての空白文字を ASCII 32 の単一インスタンスに変更し、2 つ目はそれを削除します。

于 2011-11-24T11:24:16.290 に答える
13

これを試して:

str.replace(" ","");
于 2011-11-24T11:22:31.763 に答える
13

オプション 1 :

空白を単純化してから削除する

ドキュメントごと

[ QString::simplified] 最初と最後から空白が削除され、内部空白の各シーケンスが単一のスペースに置き換えられた文字列を返します。

文字列が単純化されると、空白は簡単に削除できます。

str.simplified().remove(' ')

オプション 2 :

a を使用して、QRegExp内のすべてのタイプの空白をキャプチャしますremove

QRegExp space("\\s");
str.remove(space);

ノート

  • OP 文字列には、さまざまな種類 (タブ、キャリッジ リターン、改行) の空白があり、すべて削除する必要があります。これはトリッキーな部分です。

  • QString::removeQt 5.6 で導入されました。5.6 より前の削除はQString::replace、空白を空の文字列に置き換えて使用することで実現できます""

于 2014-03-06T00:42:54.817 に答える