Russian Qt Forum

Программирование => Алгоритмы => Тема начата: Fregloin от Ноябрь 24, 2011, 13:25



Название: Распарсить строку-шаблон с помощью RegExp
Отправлено: Fregloin от Ноябрь 24, 2011, 13:25
Привет. Столкнулся с  такой задачей.
Есть перечень строк-шаблонов вида
"Светофор %lightname изменил состояние (%lightstate), теперь %onoff!".
Нужно вместо lightname,%lightstate и %onoff подставить вычисляемые значения (значения вычисляются в коде).
Я делал раньше тупой сплит по пробелам, смотрел, если первый символ %, то подставлял вместо него нужное слово,но к сожалению (%lightstate) и %onoff! не катит.
Я так понимаю, есть смысл каждый элемент списка(результат split) проверять еще на RegExp? Как мне сделать так, что бы находилось слово(одни символы латиницы) за %? и вместо них уже подставить нужное значение. т.е. к примеру
%lightname:%lightstate! стало светофор:открыт!


Название: Re: Распарсить строку-шаблон с помощью RegExp
Отправлено: madRoger от Ноябрь 24, 2011, 13:31
Может просто заменять слова в тексте с помощью QString::replace( const QString & before, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive ) ?


Название: Re: Распарсить строку-шаблон с помощью RegExp
Отправлено: Fregloin от Ноябрь 24, 2011, 15:00
хм, как вариант попробую, спасибо.


Название: Re: Распарсить строку-шаблон с помощью RegExp
Отправлено: trot от Ноябрь 25, 2011, 17:22
Вот тебе регулярное выражение, которое будет искать нужные слова, ну а дальше дело техники
%[a-zA-Z]+