Удалить скобки в QString

У меня есть QString, содержащий "(M001)", и я хочу удалить круглые скобки в тексте. Результат должен быть "M001". Как мне использовать QRegExp для этого?


person Community    schedule 18.05.2016    source источник
comment
Вы хотите, чтобы регулярное выражение удаляло все круглые скобки или только '(' в начале строки и ')' в конце строки?   -  person jotik    schedule 19.05.2016


Ответы (2)


Я вижу два возможных способа сделать это:

1.Используя QString::remove() следующим образом:

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

2. Используя класс QRegExp следующим образом:

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

В обоих вариантах я получаю строку «M001». Конечно, есть некоторые ограничения: все круглые скобки будут удалены. Но, похоже, это то, что вы хотите, не так ли?

person t3ft3l--i    schedule 18.05.2016
comment
Я не хочу использовать str.remove()); поэтому я спросил QRegExp, и он работает. большое спасибо. - person ; 18.05.2016

Если вы знаете, что в вашей строке всегда есть круглые скобки, вы можете просто сделать что-то вроде:

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");

EDIT: Если вы хотите удалить ВСЕ круглые скобки из строки, вы можете попробовать:

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

or

str.remove(QRegExp("[()]"));
person jotik    schedule 18.05.2016
comment
Я хочу использовать QRegExp. Я пытаюсь это сделать, но это не работает. - person ; 18.05.2016
comment
@user1020141 user1020141 Исправлена ​​ошибка в моем коде. Попробуйте еще раз. - person jotik; 18.05.2016