Russian Qt Forum

Qt => Общие вопросы => Тема начата: simark1979 от Январь 02, 2010, 18:31



Название: QRexExp [решено]
Отправлено: 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;
    }
}

А если коротко: нужна регулярка для определения последнего символа в строке, чтобы символы считывались только из текущей строки.


Название: Re: QRexExp [решено]
Отправлено: simark1979 от Январь 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;
    }
}

Всем спасибо!