У меня есть QString
, содержащий «(M001)», и я хочу удалить круглые скобки в тексте. Результат должен быть «M001». Как мне использовать QRegExp
?Удалить круглые скобки в QString
ответ
Если вы знаете, ваша строка всегда имеет круглую скобку, вы можете просто сделать что-то вроде:
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(')');
или
str.remove(QRegExp("[()]"));
Я хочу использовать QRegExp. Я стараюсь, но это не работает. –
@ user1020141 Исправлена ошибка в моем коде. Попробуй еще раз. – jotik
thansk много это сработало. –
Я вижу два возможных путей для этого:
1.Usin г QString::remove()
так:
str.remove("(");
str.remove(")");
2.Using QRegExp класс как это:
str.remove(QRegExp("[()]"));
В обоих вариантах я получаю "M001" строку. Конечно, есть некоторые ограничения: все скобки будут удалены. Но похоже, что это то, что вы хотите, не так ли?
Я не хочу использовать str.remove (")"); поэтому я спросил QRegExp, и он работает. большое спасибо. –
@ user1020141 без проблем, добро пожаловать –
Вы хотите, чтобы регулярное выражение удаляло ** все ** круглые скобки или просто '(' в начале строки и ')' в конце строки? – jotik