修剪字符串列表中所有字符串的最佳方法是什么?我尝试使用replaceInStrings:
QStringList somelist;
// ... //
// add some strings
// ... //
somelist.replaceInStrings(QRegExp("^\s*"),"");
但未删除空格。
答案 0 :(得分:7)
QRegExp("^\s*")
\是特殊符号,因此当您需要将斜杠插入字符串时必须使用\\
QRegExp("^\\s*")
答案 1 :(得分:5)
另一个答案已经告诉过,你需要逃避反斜杠。您还希望更改表达式以匹配一个或多个空格而不是0或更多空格,请尝试使用: QRegExp( “^ \\ S +”)
答案 2 :(得分:0)
如果可以使用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();
}
答案 3 :(得分:0)
修剪意味着删除字符串前面和末尾的空格。到目前为止,所有解决方案都只删除了前面的空格。
这是真正的修剪解决方案:
str_list.replaceInStrings(QRegExp("^\\s+|\\s+$"), "");
答案 4 :(得分:-1)
QStringList somelist;
for(int i = 0; i < somelist.size(); ++i) {
QString item = static_cast<QString>(somelist[i]).trimmed()
}