27

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

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

我可以erase_all(str, " ");在 boost 中做到这一点,但我想留在 qt 中。

4

4 回答 4

63
str = str.simplified();
str.replace( " ", "" );

第一个将所有空白字符更改为 ASCII 32 的单个实例,第二个将其删除。

于 2011-11-24T11:24:16.290 回答
13

试试这个:

str.replace(" ","");
于 2011-11-24T11:22:31.763 回答
13

选项 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空字符串替换空格来实现删除""

于 2014-03-06T00:42:54.817 回答
0

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

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

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

于 2018-06-07T09:17:54.997 回答