PDA

Просмотр полной версии : Возможно ли использование регулярных выражений во флеше ?


Bорон
02.05.2006, 09:06
Доброго времени суток.

Скажите, а во флеше есть какие то ф-и для поиска/замены текста по регулярным выражениям ?

(В хелпе и близлежащих FAQ ничего не нашол. Разве только выяснил, что в нем точно нет нормальных ф-й замены текста. Только извращение split+join).

В чем собственно задача, которую я пытаюсь решить:
1. Есть xml файл (пример в конце поста).
2. Он обрабатывается как список разделов в галерее.
3. Так как теги разделены пробелами и переводами строки \n, то флеш свято верит что там есть node. Хотя конечно этот node никому не нужен.
4. Что бы избавится от ненужных узлов перед parseXML я хотел обработать строку загруженую строку таким вот образом:

заменить /(</[a-z]+>)[\s\n]*(<[a-z]+>)/ на /\1\2/ (тоесть на первую и вторую переменную).

Выражение писал навскидку. Соответственно не пинайте если бред.
Что оно должно делать - удалять все пробельные символы и переводы строки между закрывающим и открывающим тегом.

Подскажите, как это реализовать, пожалуста :)
Или может я как то не так xml гружу ? На всякий случай код загрузки в конце поста.

XML файл

<?xml version="1.0" encoding="windows-1251" ?>
<gallery bg_addr='bg/some.jpg'>
<chapter name='chpater 1' addr='class1' ico='ico.png' left_arrow='arrow_l.gif' right_arrow='arrow_r.gif'>
<foto addr='foto1.jpg' prev='foto1_prev.jpg' name='this is foto 1' whatermark='Not for free' border='border1.jpg'/>
<foto addr='foto2.jpg' prev='foto2_prev.jpg' name='this is foto 2' whatermark='Not for free' border='border2.jpg'/>
</chapter>
<chapter addr='class2' ico='ico.png' left_arrow='arrow_l.gif' right_arrow='arrow_r.gif' name='chapter2'>
<foto addr='foto1.jpg' prev='foto1_prev.jpg' name='this is foto 1' whatermark='Not for free' border='border1.jpg'/>
</chapter>
</gallery>


Загрузка XML:

gallery = new XML();
gallery.load("setup.xml");
gallery.onData = function(src){
gallery.parseXML(src);
}

breez38
02.05.2006, 10:31
я вообще не понял, зачем ты "ручками" парсишь XML. load сам это делает, тебе нужно только отловить onLoad и использовать уже готовое дерево. А чтоб XML понимал пробелы и переводы строк добавь сроку перед load()
gallery.ignoreWhite = true;

Bорон
02.05.2006, 10:52
Спасибо большое.
Сейчас попробую.
Я "ручками" я парсю xml так как:
1. раньше никогда с ним не работал.
2. onData выдает непарсеный.
3. В хелпе нашел парсер - заработало.
4. OnLoad мне сходу выдал Весьма Странный результат. Сейчас еще раз проверю. Может это у меня Очень Странное восприятие результатов :)

breez38
02.05.2006, 11:12
и еще совет: используй UTF-8, с ним гемороя меньше. Блокнот в Win2000 и старше умеет работать с этой кодировкой, достаточно при первом сохранении в окне сохранения в списке кодировка (внизу) выбрать UTF-8 а дальнейшее редактирование/сохранение будет уже в UTF-8 происходить.

Bорон
02.05.2006, 11:28
Гмм. Это у меня что то с восприятием было :) Onload прекрасно работает.

ЗЫ. А насчет регулярных выражений - они во флеше фигурируют в каком товиде ? Или отсутствуют как класс ?

Bорон
02.05.2006, 11:34
Мдя. Что то везде появляются тенденции к использованию UTF-8...
Сперва Аякс, теперь тут...
Я боюсь что человеку, который попросил ему галерею эту написать, будет чужда сама идея кодировок :D...
Так что лутше не рисковать. Но на будущее учту. Спасибо еще раз.

breez38
02.05.2006, 11:46
регулярных выражение во флеше не встречал.

а насчет UTF-8 - просто в этой кодировке используется 2 байта для представления символа, а не один как в ASCII, ANSI и т.д. Поэтому можно в одну кодировку запихать 65536 символов, вместо жалких 256 :). Поэтому в UTF-8 входя символы почти всех языков мира (ну там китайский в упрощенном варианте). Так что не нужно голову ломать есть ли нужная кодировка на машине юзера или нет - достаточно одной UTF-8.

undeddy
02.05.2006, 12:51
Кстати в AS3 не ввели рег.выражения?

etc
02.05.2006, 14:29
Ворон, почитайте про ignoreWhite, помогает от изврата.
Рег. выражений в AS1-AS2 нет.
Некое подобие есть только для textfield, но это фигня.

iNils
02.05.2006, 14:59
http://www.jurjans.lv/flash/RegExp.html

Den0k
02.05.2006, 15:04
Как уже сказали и не только в этой тему (чего там про поиск?:)
в AS1 и AS2 Рег. выражений нет.

>>> Кстати в AS3 не ввели рег.выражения?

http://labs.adobe.com/wiki/index.php/ActionScript_3:resources:apis:regex

http://labs.adobe.com/wiki/index.php/ActionScript_3:resources:apis:regex:overview

по секрету: там ещё много чего ввели )

Bорон
02.05.2006, 15:22
Спасибо всем приспасибо !