C++ 删除字符串中的空格
我有一个字符串C++ 删除字符串中的空格,c++,qt,qstring,C++,Qt,Qstring,我有一个字符串很多\n空白\r\n,我已经简化了它,但是我仍然需要去掉字符串中的其他空格 QString str = " lots\t of\nwhitespace\r\n "; str = str.simplified(); 我可以这样做erase_all(str,”)在boost中,但我想保持在qt中。尝试以下操作: str.replace(" ",""); 第一个将所有空白字符更改为ASCII 32的单个实例,第二个将删除该实例。选项1: 简化空白,然后将其删除 根据 [QStrin
很多\n空白\r\n
,我已经简化了它,但是我仍然需要去掉字符串中的其他空格
QString str = " lots\t of\nwhitespace\r\n ";
str = str.simplified();
我可以这样做erase_all(str,”)代码>在boost中,但我想保持在qt中。尝试以下操作:
str.replace(" ","");
第一个将所有空白字符更改为ASCII 32的单个实例,第二个将删除该实例。选项1:
简化空白,然后将其删除
根据
[QString::simplified
]返回一个字符串,该字符串从开头和结尾删除了空格,并将每个内部空格序列替换为单个空格
字符串简化后,可以轻松删除空白
str.simplified().remove(' ')
选项2:
使用QRegExp
捕获删除中所有类型的空白
QRegExp space("\\s");
str.remove(space);
注释
- OPs字符串有不同类型的空白(制表符、回车符、换行符),所有这些都需要删除。这是棘手的部分
- qt5.6中引入了
QString::remove
;在5.6之前,可以使用QString::replace
并将空白替换为空字符串“
”来实现删除
您可以使用正则表达式省略对simplified()
的调用:
str.replace(QRegularExpression("\\s+"), QString());
我没有测量哪种方法更快。我想这个正则表达式的性能会更差。这里需要简化()吗?当然,删除(“”)会起作用吗?@Ironlayer,这取决于方法,是的。我已经为我的答案添加了澄清,并提供了一个不需要简化的替代解决方案。在这种情况下,您可能应该制作一个简单的测试用例并报告一个bug,因为根据文档,它仍然应该。对不起。我的错。我没有包括QString
str.replace(QRegularExpression("\\s+"), QString());