crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Заменить \n и определеном блоке html
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
ViGOur Дата 9.3.2010, 20:53
 
Цитата(kwisp @ 9.3.2010, 15:38) *
не уверен что в регулярке "()" правильно записано.
Ты прав, поправил. :)
SABROG Дата 9.3.2010, 20:41
  А вариант "\r\n" учитывается?
pussbb Дата 9.3.2010, 16:05
  Правильно QRegExp rx("<pre[^>]*>([^<]*)</pre>");

Все работает. Всем спасибо
kwisp Дата 9.3.2010, 15:38
 
Цитата(pussbb @ 9.3.2010, 15:23) *
а затем что он потом всю html-ку так сделает и довит ненужые отступы

это не он а ты :)
та делай так чтоб замена происхоила только внутри тегов. У QString есть куча функций
indexOf lastIndexOf и проч.
ну или как выше посоветовали.

ViGOur,
не уверен что в регулярке "()" правильно записано.
по идее между тегами может быть всё что угодно
я бы использовал "(.+)"
еще можно не выбирать те блоки в тегах в которых, нет перевода строки, такое же возможно теоретически.
может "(.*\n.*)" ? как то так...
pussbb Дата 9.3.2010, 15:23
 
Цитата(kwisp @ 9.3.2010, 15:56) *
а зачем тебе регулярное выражение?

а затем что он потом всю html-ку так сделает и довит ненужые отступы
например
<p>text</p>
<p>text</p>
будет так
<p>text</p><br />
<p>text</p><br />
ViGOur Дата 9.3.2010, 15:10
  Получаем все блоки pre:
QRegExp rx("<pre[^>]*>(.*)</pre>");
rx.setMinimal(true);
QStringList list;
while( ( int pos = rx.indexIn( szData, pos)) != -1)
{
   list << rx.cap(1);
   pos += rx.matchedLength();
}
затем в цикле проходимся по элементам списка list и меняем \n на <br />:
for( int n = 0; n < list.size(); n++)
{
   QString szTmp = list.at( n);
   szTmp.replace( "\n", "<br />");
   szData.replace( list.at( n), szTmp);
}
Примерно так...

Код на работоспособность не проверял, написал от руки, так что не обессудь! :)
kwisp Дата 9.3.2010, 14:56
  pussbb,
а зачем тебе регулярное выражение?
\n - строка
<br> - строка
пользуй замену QString::replace(const QString& before, const QString& after);

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