我有一个字符串lots\t of\nwhitespace\r\n
,我已经简化了,但我仍然需要摆脱字符串中的其他空格。
QString str = " lots\t of\nwhitespace\r\n ";
str = str.simplified();
我可以在提升中执行erase_all(str, " ");
,但我想保留在qt。
答案 0 :(得分:53)
str = str.simplified();
str.replace( " ", "" );
第一个将所有空格字符更改为单个ASCII 32实例,第二个删除它。
答案 1 :(得分:12)
试试这个:
str.replace(" ","");
答案 2 :(得分:8)
选项1 :
简化空白区域,然后将其删除
根据docs
[
QString::simplified
]返回一个字符串,该字符串从开头和结尾删除了空格,并且每个内部空格序列都被一个空格替换。
简化字符串后,可以轻松删除空格。
str.simplified().remove(' ')
选项2 :
使用QRegExp
捕获remove
中的所有类型的空白区域。
QRegExp space("\\s");
str.remove(space);
备注强>
OPs字符串具有不同类型的空格(制表符,回车符,换行符),所有这些都需要删除。这是棘手的部分。
QString::remove
;在移除5.6之前,可以使用QString::replace
并使用空字符串""
替换空格。
答案 3 :(得分:0)
您可以使用正则表达式忽略对simplified()
的调用:
str.replace(QRegularExpression("\\s+"), QString());
我没有测量哪种方法更快。我想这个正则表达式会表现得更差。