as3 Flex делает URL из текста кликабельным - PullRequest
1 голос
/ 20 августа 2009

В приложении AIR я загружаю кучу произвольного текста через JSON, загружаю его в объект и отображаю его с помощью специального средства визуализации. Я хотел бы, чтобы URL были кликабельными. Так что я уверен, что это возможно с помощью сумасшедшего регулярного выражения (как я нашел для php здесь ), но, будучи Flex гибким, я удивлен, что для этого нет встроенной функциональности Я просто не нахожу или не могу найти библиотеку, которую кто-то создал для этого.

(я в равной степени удивлен, что этот вопрос здесь не задавался раньше. Я ожидаю, что меня обожжет ссылка на него)

Если это не удастся, кто-нибудь захочет помочь с сумасшедшим регулярным выражением? ;>

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 20 августа 2009

Вы можете заменить URL в вашем тексте реальными ссылками, используя следующее регулярное выражение:

str = str.replace(/((https?|ftp|telnet|file):((\/\/)|(\\\\))+[\w\d:#@%\/;$()~_?\+-=\\\.&]*)/g, "<u><a href='$1'>$1</a></u>");

Затем установите htmlText для компонента Label или Text и прослушайте событие link:

<mx:Text htmlText="{str}" link="linkHandler(event)"/>

Затем откройте URL на обработчике:

public function linkHandler(event:TextEvent):void {
    navigateToURL(new URLRequest(event.text), '_blank');
}

За исключением этого регулярного выражения, я не тестировал этот код, но он должен работать. Кроме того, этот может вам помочь.

2 голосов
/ 27 октября 2010

Я хотел бы добавить, что следующий RegEx может быть гораздо более полезным для проверки URL:

/(((f|ht){1}tp:\/)[-a-zA-Z0-9@:%_\+.~#?&\/=]+)/g

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...