Название: QRexExp [решено] Отправлено: simark1979 от Январь 02, 2010, 18:31 Вопрос следующий:
имеется QString с содержанием (каждый параметр - новая строка): From: 79184330004 IMSI: 250018424297918 Report: yes Alphabet: UCS2 Length: 12" Делаю функцию для извлечения параметра с помощью QRegExp, но не удается определить признак конца строки, т.е. параметра QString gsm_handler::extractFromHeader (QString ¶m, 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 ¶m, 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; } } Всем спасибо! |