Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Заменить \n и определеном блоке html


Автор: _pussbb 9.3.2010, 14:06
Необходимо заменить все  \n  блоке <pre class...>....</pre> на <br />.
 я так понимаю что надо использовать QString::replace ( const QRegExp & rx, const QString & after ) . 
Да вот только одна беда сколько не разбирался всё ровно  не пойму я этот QRegExp.
подскажите как это сделать.
Заранее спасибо.

Автор: borisbn 9.3.2010, 15:39
Конечно, в данном случае можно использовать QRegExp, но IMHO проще
replace ( const QString & before, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive )

Ну, а для QRegExp должно быть как-то так:
replace( QReqExp( "\\\\n" ), "<br/>" );
четыре обратных слеша нужны, т.к.
Код

Note: The C++ compiler transforms backslashes in strings. To include a \ in a regexp, enter it twice, i.e. \\. To match the backslash character itself, enter it four times, i.e. \\\\.

если же тебе нужен перевод строки, тогда
replace( QReqExp( "\n" ), "<br/>" );

Автор: _pussbb 9.3.2010, 19:59
реализация (подсказали на другом ресурсе)
Код

 QRegExp rx("<pre[^>]*>([^<]*)</pre>");
            rx.setMinimal(true);

            QStringList list;
             int pos = 0;
            while((pos = rx.indexIn( data, pos)) != -1)
            {
               list << rx.cap(1);
               pos += rx.matchedLength();

            }

            for( int n = 0; n < list.size(); n++)
            {
               QString szTmp = list.at( n);
               szTmp.replace( "\n", "<br />");
               data.replace( list.at( n), szTmp);
            }

Автор: borisbn 9.3.2010, 21:01
IMHO разбирать html вручную неправильно. Для этого есть http://qt.nokia.com/doc/4.6/xml-processing.html

Автор: Любитель 9.3.2010, 21:15
HTML не является подмножеством XML!

Автор: SABROG 9.3.2010, 21:20
А символ "\r" останется мертвым грузом висеть в html?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)