删除字符串中的空格

时间:2011-11-24 11:18:11

标签: c++ qt qstring

我有一个字符串lots\t of\nwhitespace\r\n,我已经简化了,但我仍然需要摆脱字符串中的其他空格。

QString str = "  lots\t of\nwhitespace\r\n ";
str = str.simplified();

我可以在提升中执行erase_all(str, " ");,但我想保留在qt。

4 个答案:

答案 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字符串具有不同类型的空格(制表符,回车符,换行符),所有这些都需要删除。这是棘手的部分。

  • 在Qt 5.6中引入了
  • QString::remove;在移除5.6之前,可以使用QString::replace并使用空字符串""替换空格。

答案 3 :(得分:0)

您可以使用正则表达式忽略对simplified()的调用:

str.replace(QRegularExpression("\\s+"), QString());

我没有测量哪种方法更快。我想这个正则表达式会表现得更差。