如何最好地对字符串列表中的所有字符串进行修剪?我尝试使用replaceInStrings:
QStringList somelist;
// ... //
// add some strings
// ... //
somelist.replaceInStrings(QRegExp("^\s*"),"");
但是空格没有被删除。
QRegExp("^\s*")
\ 是一个特殊符号,所以当你需要在字符串中插入反斜杠时,必须使用\\
。
QRegExp("^\\s*")
正如其他答案所说,您需要转义反斜杠。您还需要更改表达式以匹配一个或多个空格而不是0个或多个空格,请尝试使用: QRegExp("^\\s+")
CONFIG += c++11
),那么请尝试以下简短的代码片段:QStringList somelist;
// fill list
for(auto& str : somelist)
str = str.trimmed();
trimmed
函数调用结果分配回原始列表中的项目。
如果没有使用C++11,您可以使用具有Java风格的Qt
方法和可变迭代器: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();
}
Trimming 意味着删除字符串前面和末尾的空格。到目前为止,所有的解决方案都只删除了前面的空格。
这里是真正的修剪解决方案:
str_list.replaceInStrings(QRegExp("^\\s+|\\s+$"), "");
QStringList somelist;
for(int i = 0; i < somelist.size(); ++i) {
QString item = static_cast<QString>(somelist[i]).trimmed()
}