Russian Qt Forum
Ноябрь 01, 2024, 08:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QRexExp [решено]  (Прочитано 4369 раз)
simark1979
Гость
« : Январь 02, 2010, 18:31 »

Вопрос следующий:

имеется QString с содержанием (каждый параметр - новая строка):

From: 79184330004
IMSI: 250018424297918
Report: yes
Alphabet: UCS2
Length: 12"


Делаю функцию для извлечения параметра с помощью QRegExp, но не удается определить признак конца строки, т.е. параметра


QString gsm_handler::extractFromHeader (QString &param, QString &headerMsg) {

    QString extracted;
    QRegExp regexp;
    int pos;

    regexp.setPattern(Непонимающий Непонимающий Непонимающий);

    pos = regexp.indexIn(headerMsg);
    if (pos > -1)
    {
   // параметр найден
   extracted = regexp.cap(0);
   return extracted;
    }
    else {
   // параметр не найден
   return NULL;
    }
}


А если коротко: нужна регулярка для определения последнего символа в строке, чтобы символы считывались только из текущей строки.
« Последнее редактирование: Январь 02, 2010, 22:58 от Arkadiy » Записан
simark1979
Гость
« Ответ #1 : Январь 02, 2010, 22:26 »

Следующая функция извлекает значение параметра из
текста (каждый параметр - новая строка):

From: 79184330004
IMSI: 250018424297918
Report: yes
Alphabet: UCS2
Length: 12


В качестве параметров принимает искомый параметр и текст, в котором искать.
например: extractValue (QString ("From:"), QString Msg);

Возвращает ответ строке QString, если параметр не найден - NULL.



QString class::extractValue (const QString &param, const QString &Msg) {
    QString extracted;
    QRegExp regexp;
    int pos;

    regexp.setPattern(QString (param).append("[^\\n]{1,}"));
    pos = regexp.indexIn(Msg);
    if (pos > -1)
    {
       logEvent(3, QString("param %1 exists").arg(param));
       QString extractedLine = regexp.cap(0);
       extracted = extractedLine.remove(0, param.count());
       extracted = extracted.trimmed();
       return extracted;
    }
    else {
       return NULL;
    }
}


Всем спасибо!
« Последнее редактирование: Январь 02, 2010, 22:31 от Arkadiy » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.053 секунд. Запросов: 21.