crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Удаление скобок, с содержимым
RazrFalcon
  опции профиля:
сообщение 8.12.2011, 12:12
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Примеры:
[1234][1234]text[1234][1234]
[1234] [1234] text [1234] [1234]
[1234][1234] text [1234][1234]
etc.

Во всех случаях должен остаться только text. Все что в скобках и сами скобки нужно удалить.

Какие есть варианты?
Сейчас использую QRegExp, но думаю есть более простые способы.
    QString name("[1234][1234] text [1234][1234]");
    name.remove(QRegExp(" \\[.*\\]")); // may be ' \\[.*\\]$'
    QRegExp rx1("\\[.*\\]$");
    int pos1 = 0;
    QString rmStr;
    while (pos1 >= 0) {
        pos1 = rx1.indexIn(name,pos1);
        if (pos1 >= 0) {
            ++pos1;
        }
        qDebug()<<rx1.capturedTexts();
        QString tmpStr = rx1.capturedTexts().first();
        if (!tmpStr.isEmpty() && tmpStr.count() > rmStr.count() && tmpStr != name)
            rmStr = rx1.capturedTexts().first();
    }
    name.remove(rmStr);
    name.remove(QRegExp("\\[.*\\]"));
    qDebug()<<name;
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Sokoloff
  опции профиля:
сообщение 8.12.2011, 17:46
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Если в скобках могут быть только цифры, то вместо всего этого используй одну строку:
 name.remove(QRegExp("\\s*\\[\\d+\\]\\s*"));

Если не только цифры, то напиши что, подумаем. Но по любому код будет проще твоего.

Сообщение отредактировал Sokoloff - 8.12.2011, 17:46
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.11.2024, 14:14