修剪字符串列表中所有字符串的最佳方法是什么?我尝试使用replaceInStrings:QStringList从字符串中删除空格
QStringList somelist;
// ... //
// add some strings
// ... //
somelist.replaceInStrings(QRegExp("^\s*"),"");
但未删除空格。
修剪字符串列表中所有字符串的最佳方法是什么?我尝试使用replaceInStrings:QStringList从字符串中删除空格
QStringList somelist;
// ... //
// add some strings
// ... //
somelist.replaceInStrings(QRegExp("^\s*"),"");
但未删除空格。
象前面说,你需要转义反斜线另一个答案必须使用\\
。你也想改变表达式匹配一个或多个空格,而不是0或多个空格,请尝试使用: QRegExp(“^ \\ S +”)
QRegExp("^\s*")
\是特殊符号,所以当你需要插入斜线为字符串
QRegExp("^\\s*")
QStringList somelist;
for(int i = 0; i < somelist.size(); ++i) {
QString item = static_cast<QString>(somelist[i]).trimmed()
}
如果可以使用C++ 11 (QT5的qmake项目文件:CONFIG += c++11
),那就试试这个小片段:
QStringList somelist;
// fill list
for(auto& str : somelist)
str = str.trimmed();
它将通过与基准和trimmed
函数调用结果列表运行将在原始列表被分配回项目。
如果不使用C++ 11可以使用Qt
方法与Java风格的,可变的迭代器:
QMutableListIterator<QString> it(somelist);
while (it.hasNext()) {
it.next();
it.value() = it.value().trimmed();
}
后者的方法恰到好处,如果,例如,要删除空字符串他们已经修整后:
QMutableListIterator<QString> it(somelist);
while (it.hasNext()) {
it.next();
it.value() = it.value().trimmed();
if (it.value().length() == 0)
it.remove();
}
虽然此代码片段可能会解决问题,但它并不能解释为什么或如何回答问题。请[请为您的代码添加解释](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers),因为这确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 **举报人/评论者:** [仅限代码解答,例如downvote,请勿删除!](// meta.stackoverflow.com/a/260413/2747593) –