C++ (Qt)template <class TRepl>QString qCustomReplace( const QString& text, TRepl repl );
C++ (Qt)inline QStringRef OffsetRef( QStringRef & ref, int offs ){ return QStringRef(ref.string(), ref.position() + offs, ref.length() - offs);} QStringRef MyRepl( QStringRef & ref ){ const int count = 2; typedef QPair<QString, QString> TPair; static const TPair data[count] = { TPair("$user", "terminator"), TPair("$version", "T1000") }; // if (ref[0] != '$') return QStringRef(); // возможная оптимизация for (int i = 0; i < count; ++i) if (ref.startsWith(data[i].first)) { ref = OffsetRef(ref, data[i].first.size()); return QStringRef(&data[i].second); } return QStringRef(); // пустая ссылка - замены не было (переход на след символ)}