|
|
|||||
Регистрация: Feb 2011
Сообщений: 22
|
Вырезание URL адресов из текста.
Доброго времени суток!
Требуется вырезать URL адреса из текста в идеале заменять их неким сообщением, например "ссылка вырезана". На данный момент рассматриваю использование регулярного выражения и с этим все понятно. Вопрос, после того как регулярное выражение найдет адрес, как его вырезать. обрабатываемый текст беру из textInput: // Само регулярное выражение var reg:RegExp = new RegExp('(?:(?:ht|f)tps?://)?(?:[\\-\\w]+:[\\-\\w]+@)?(?:[0-9a-z][\\-0-9a-z]*[0-9a-z]\\.)+[a-z]{2,6}(?::\\d{1,5})?(?:[?/\\\\#][?!^$.(){}:|=[\\]+\\-/\\\\*;&~#@,%\\wА-Яа-я]*)?'); ... if(reg.test(myText.text)){ // Нашел вырезаем }else{ // НЕ Нашел оставляем как есть } ... <mx:TextInput id="myText"/> |
|
|||||
Регистрация: Sep 2010
Сообщений: 47
|
cмотри String - replace
|
|
|||||
Modus ponens
|
Регулярное выражение не с того форума скопировали в AS3 не нужны :? в обычных группах. Да и само по себе выражение имеет только примерное отношение к тому, что вы спросили. Именно URL в общем случае вы умаетесь искать регулярным выражением, не уверен, что это даже в принципе возможно. Из того, что я видел, что делают - ищут http://[^\s]+ чтобы не особо вдаваться в подробности. Т.е. если вам уж хочется быть дотошным и искать именно ссылки по RFC - тогда это выражение в топку, потому что оно не правильное. Если вам просто большинство ссылок удалить - см. вариант выше.
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Feb 2011
Сообщений: 22
|
to Flashrunner Спасибо за новодку!
to wvxvw Перечитал кучу информации по регулярным выражениям и все равно понимаю с трудом как их писать. Именно по этому воспользовался волшебным копипастом, что конечно не хорошо. Но данное РВ работает прекрасно, учитывает все, что мне необходимо. Если у вас есть материал по РВ буду презнателен. Вот что получилось в итоге: var str:String = someInput.text; ... if(reg.test(str)){ // reg РВ приведенное в предыдушем куске кода str = str.replace(reg, " [Ссылка удалена!] "); textArea.text += str+"\n"; }else{ textArea.text += str+"\n"; } ... str.replace(reg, " [Ссылка удалена!] "); удаляет только одну ссылку, если в тексте их несколько. На данный момент пробую написать проверку пока РВ что-то находит. Добавлено через 8 минут Второй вопрос снят делаю так: |
|
|||||
Modus ponens
|
test() не нужен - если нечего заменять, то ничего и не заменится. Для того, чтобы получить все совпадения, а не только следующее нужен флаг g. В AS3 принято использовать конструкторы для регулярных выражений только если они создаются динамически, если выражение извесно во время компиляции - лучше пользоваться литералом - по крайней мере меньше обратных косых прийдется писать.
Т.е. выражение эквивалентно: (просто на всякий случай напомню, что протоколами http(s) и (s)ftp все протоколы и псевдопротоколы не исчерпываются, как пример - svn://, а еще есть торенты и еще...).
__________________
Hell is the possibility of sanity |
|
|||||
Modus ponens
|
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Feb 2011
Сообщений: 22
|
Спасибо всем ответившим, особеннло wvxvw.
|
Часовой пояс GMT +4, время: 23:23. |
|
« Предыдущая тема | Следующая тема » |
|
|