Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.08.2009, 14:29
Аллиас вне форума Посмотреть профиль Отправить личное сообщение для Аллиас Найти все сообщения от Аллиас
  № 1  
Ответить с цитированием
Аллиас
 
Аватар для Аллиас

Регистрация: May 2009
Сообщений: 63
По умолчанию str.Replace: замена строки только, если она не содержит определенных подстрок

Здравствуйте. Ситуация такая:

Я пишу парсер BBCode в HTML (в первый раз), и столкнулся с проблемой преобразования символа перехода на новую строку в <br /> (HTML то не воспринимает \n как указание к переходу на новую строку), поэтому я сначала попробовал заменить все \n на <br> следующим выражением:
Код AS3:
str = str.replace(/\n/gims, "<br />\n");
но обнаружилось, что после блочных тэгов такая замена добавляет ненужную строку, следовательно необходимо такое выражение для replace, которое бы заменяло \n на <br>\n только в тех строках которых перед \n нету [hr] (конвертируется в <hr> ) или [/spoiler] (конвертируется в <div>).
По совету udaaff, я понял что для такой проверки нужно использовать "негативную группу просмотра вперед" (не совсем понимаю этот термин), но мои эксперименты результатов почему-то не принесли:
Код AS3:
str = str.replace(/(?!\[\(hr|\/spoiler)\])\n/, "<br />\n");
//теоретически должно выполнять замену \n на <br>\n только если перед этим самым
//\n не находится [hr] или [/spoiler], на практике не работает ;(
Не подскажите как мне исправить выражение так, чтобы все работало?
__________________
Все не так просто, как кажется... все гораздо проще...


Последний раз редактировалось Аллиас; 15.08.2009 в 16:15.
Старый 15.08.2009, 23:24
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
попробуй так
Код:
/(?<!(\[hr\])|(\[\/spoiler\]))\n/

Создать новую тему Ответ Часовой пояс GMT +4, время: 05:02.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 05:02.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.