从QString中删除所有特殊字符

4

如何在QString中删除所有特殊字符^和$的出现?

我尝试过:

QString str = "^TEST$^TEST$";
str = str.remove(QRegularExpression("[^$]."));
2个回答

4
您忘记转义符号^。要转义它,需要使用\,但由于C字符串的原因,它也需要被转义。另外,您希望出现一次或多次匹配,可以使用+。 正则表达式应该是这样的:[\\^$]+在线查看
所以应该是:
QString str = "^TEST$^TEST$";
str = str.remove(QRegularExpression("[\\^$]+"));

根据Joe P下面的评论中提到的,另一个可能性是:

QString str = "^TEST$^TEST$";
str = str.remove(QRegularExpression("[$^]+"));

因为^在开头有特殊含义,所以你需要转义它以获取字面意思,在线查看


奇怪的是我的输出是$ $。有什么想法吗?! - leon22
1
你还需要转义C++中的 \,所以它应该像这样:str = str.remove(QRegularExpression("[\^$]+")); - leon22
1
你也可以在 [] 中重新排序字符,因为 ^ 只是特殊字符的开头:str = str.remove(QRegularExpression("[$^]+")); - Joe P
@JoeP:非常好,我没想到那个。 - Andre Kampling

0

您也可以尝试使用正则表达式,以便删除每个非字母数字字符:

QString str = "$om<Mof*%njas"
str = str.remove(QRegExp("[^a-zA-Z\\d\\s]"));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接