3

I have a QString containing "(M001)" and I want to remove the parentheses in text. The result should be "M001". How should I use a QRegExp for this?

jotik
  • 17,044
  • 13
  • 58
  • 123
  • Do you want the regular expression to remove **all** parenthesis, or just '(' in the beginning of the string and ')' at the end of string? – jotik May 19 '16 at 08:05

2 Answers2

3

If you know your string always has parenthesis, you could just do something like:

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

Otherwise you could also do this instead of using a regular expression:

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

But if you insist using a QRegExp, try this:

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

or this:

str.replace(QRegExp("^\\((.*)\\)$"), "\\1");

EDIT: If you want to remove ALL parenthesis from the string you can try:

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

or

str.remove(QRegExp("[()]"));
jotik
  • 17,044
  • 13
  • 58
  • 123
3

I see two possible way to do it:

1.Using QString::remove() like this:

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

2.Using QRegExp class like this:

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

In both of variants I get "M001" string. Of course, there are some restrictions: all parentheses will be removed.But seems like it's what you want, don't you?

t3ft3l--i
  • 1,372
  • 1
  • 14
  • 21
  • I don't want to use str.remove(")"); so I asked QRegExp and it works. thanks a lot. –  May 18 '16 at 13:44