在QString中删除括号

3

我有一个包含“(M001)”的QString,我想要移除文本中的括号。结果应该是“M001”。我应该如何使用QRegExp进行此操作?


您想要正则表达式删除所有括号,还是只删除字符串开头的‘(’和字符串结尾的‘)’? - jotik
2个回答

3

如果您知道您的字符串始终带有括号,您可以这样做:

str = str.mid(1); // Remove first character
str.chop(1);      // Remove last character

否则,您也可以使用以下方法而不是使用正则表达式:

否则,您也可以使用以下方法而不是使用正则表达式:

if (str.startsWith('(') && str.endsWith(')')) {
    str = str.mid(1); // Remove first character
    str.chop(1);      // Remove last character
}

但如果您坚持使用QRegExp,可以尝试以下方法:

str.remove(QRegExp("^\\(|\\)$"));

或者这个:
str.replace(QRegExp("^\\((.*)\\)$"), "\\1");

编辑:如果您想从字符串中删除所有括号,可以尝试以下方法:

str.remove('(').remove(')');

或者

str.remove(QRegExp("[()]"));

我想使用QRegExp。我尝试了,但它不起作用。 - user1020141
@user1020141 我的代码中有一个错误已经被修正,请再试一次。 - jotik

3

我可以提供两种可能的方法:

1. 使用QString::remove(),如下所示:

str.remove("(");
str.remove(")");

2. 使用QRegExp类进行如下操作:

str.remove(QRegExp("[()]"));

无论哪种变体,我都会得到"M001"字符串。当然,有一些限制:所有的括号都将被删除。但看起来这正是你想要的,不是吗?

我不想使用str.remove(")");,所以我询问了QRegExp并且它起作用了。非常感谢。 - user1020141

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