2011-07-21 40 views
4

文字列リストのすべての文字列をトリミングする最良の方法はありますか?私はreplaceInStringsを使用しようとします:QStringListは文字列から空白を削除します

QStringList somelist; 
// ... // 
// add some strings 
// ... // 
somelist.replaceInStrings(QRegExp("^\s*"),""); 

ただし、スペースは削除されません。

答えて

4

にスラッシュを挿入する必要があるときに\\を使用しなければならないので、あなたはバックスラッシュをエスケープする必要があり、特別なシンボルです。また、使用してみてください、1つ以上のスペースではなく0以上のスペースに一致するように式を変更したい: QRegExp(「^ \\ S +」)

7
QRegExp("^\s*") 

\すでに話した別の答えとして、文字列

QRegExp("^\\s*") 
-1
QStringList somelist; 

for(int i = 0; i < somelist.size(); ++i) { 
    QString item = static_cast<QString>(somelist[i]).trimmed() 
} 
+2

このコードスニペットは問題を解決するかもしれませんが、なぜそれが質問に答えるか説明しません。 [あなたのコードの説明を含めてください](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)、本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。 **フラグ/査読者:** [このようなコードのみの回答については、downvoteは削除しないでください!](// meta.stackoverflow.com/a/260413/2747593) –

0

あなたはC++ 11を使用できる場合(qt5 qmakeのプロジェクトファイル:CONFIG += c++11):

QStringList somelist; 
// fill list 
for(auto& str : somelist) 
    str = str.trimmed(); 

それを基準とtrimmed関数呼び出しの結果にリストを介して実行されますが、元のリストの項目に戻って割り当てられます、そしてこの短いスニペットを試してみてください。あなたは、例えば、する場合は後者の方法は、完璧である

QMutableListIterator<QString> it(somelist); 
while (it.hasNext()) { 
    it.next(); 
    it.value() = it.value().trimmed(); 
} 

:あなたはJavaスタイルとQt方法、変更可能なイテレータを使用することができますC++ 11を使用しない

彼らはトリミングされた後、空の文字列にを削除:

QMutableListIterator<QString> it(somelist); 
while (it.hasNext()) { 
    it.next(); 
    it.value() = it.value().trimmed(); 
    if (it.value().length() == 0) 
     it.remove(); 

} 

を削除が有効である、see the Qt java-style iterator docs

関連する問題