2016-05-18 12 views
2

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

+0

Вы хотите, чтобы регулярное выражение удаляло ** все ** круглые скобки или просто '(' в начале строки и ')' в конце строки? – jotik

ответ

2

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

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("[()]")); 
+0

Я хочу использовать QRegExp. Я стараюсь, но это не работает. –

+0

@ user1020141 Исправлена ​​ошибка в моем коде. Попробуй еще раз. – jotik

+0

thansk много это сработало. –

3

Я вижу два возможных путей для этого:

1.Usin г QString::remove() так:

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

2.Using QRegExp класс как это:

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

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

+0

Я не хочу использовать str.remove (")"); поэтому я спросил QRegExp, и он работает. большое спасибо. –

+0

@ user1020141 без проблем, добро пожаловать –