我有一个 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( " ", "" );
第一个将所有空白字符更改为 ASCII 32 的单个实例,第二个将其删除。
试试这个:
str.replace(" ","");
选项 1:
简化空白,然后将其删除
根据文档
[
QString::simplified
] 返回一个字符串,该字符串从开头和结尾删除了空格,并且将每个内部空格序列替换为单个空格。
一旦字符串被简化,空格就可以很容易地被删除。
str.simplified().remove(' ')
选项 2:
使用 aQRegExp
捕获remove
.
QRegExp space("\\s");
str.remove(space);
笔记
OPs 字符串有不同类型的空格(制表符、回车、换行),所有这些都需要删除。这是棘手的部分。
QString::remove
在 Qt 5.6 中引入;在 5.6 之前,可以使用QString::replace
空字符串替换空格来实现删除""
。
您可以simplified()
使用正则表达式省略调用:
str.replace(QRegularExpression("\\s+"), QString());
我没有测量哪种方法更快。我猜这个正则表达式会表现得更差。