単純化した文字列_lots\t of\nwhitespace\r\n
_がありますが、それでも文字列内の他のスペースを取り除く必要があります。
_QString str = " lots\t of\nwhitespace\r\n ";
str = str.simplified();
_
これはerase_all(str, " ");
をboostで実行できますが、qtに残りたいです。
str = str.simplified();
str.replace( " ", "" );
1つ目はすべての空白文字をASCII 32の単一インスタンスに変更し、2つ目はそれを削除します。
これを試して:
str.replace(" ","");
オプション1:
空白を簡略化してから削除
[
QString::simplified
]最初と最後から空白が削除され、内部の空白のシーケンスがそれぞれ1つのスペースに置き換えられた文字列を返します。
文字列が単純化されると、空白は簡単に削除できます。
str.simplified().remove(' ')
オプション2:
QRegExp
を使用して、remove
内のすべてのタイプの空白をキャプチャします。
QRegExp space("\\s");
str.remove(space);
注意事項
OP文字列には、さまざまなタイプ(タブ、キャリッジリターン、改行)の空白があり、すべて削除する必要があります。これはトリッキーな部分です。
QString::remove
はQt 5.6で導入されました。 5.6より前のバージョンでは、QString::replace
を使用して削除し、空白を空の文字列""
で置き換えることができます。
正規表現を使用してsimplified()
の呼び出しを省略できます。
str.replace(QRegularExpression("\\s+"), QString());
どちらの方法が速いか測定していません。この正規表現はパフォーマンスが悪いと思います。