【问题标题】:How do I linkify text using ActionScript 3如何使用 ActionScript 3 链接文本
【发布时间】:2012-09-14 23:34:10
【问题描述】:

我有一个要链接的文本(识别 URL 并将它们转换为 HTML 链接)。文本可以是多行的,并且可以包含多个 url,如下例所示。

我当前的 actionscript 代码如下所示

<mx:Script>
    <![CDATA[

    import mx.controls.Alert;
    import mx.rpc.events.FaultEvent;      
    import mx.rpc.events.ResultEvent;


    private function init():void {
        var str:String = "@stack the website for google is http://www.google.com and gmail is http://gmail.com";

        //Alert.show(linkify(str),"Error");
        txtStatus.htmlText = linkify(str);
    }

     private function linkify(texty:String):String {
        //return texty.replace("/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/g",function(m):String { return m.linkify(m);});
        //return texty.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/g, function(m):String {return m.linkify(m);}).replace(/(^|[^\w])(@[\d\w\-]+)/g, function(m2):String{return '@<a href="http://twitter.com/' + m2.substr(1) + '">' + m2.substr(1) + '</a>'; });
        var pattern:RegExp = /[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/g;
        var match:String = pattern.exec(texty);
        return texty.replace(pattern,'<a href="' + match + '">' + 
        match + '</a>');
    }

    ]]>
</mx:Script>

上述脚本的问题在于它识别出第一个匹配项并使用它。还有@怎么办?

非常感谢任何帮助。

【问题讨论】:

    标签: regex actionscript-3


    【解决方案1】:

    哎呀...为什么现在每个人都使用正则表达式来完成超级简单的任务?另外,您忘记了,“+”是 URL 的有效字符,作为空格的替代品,甚至可以使用 awful lot of other characters,因此您的模式甚至不会相应地匹配...

    好吧,无论如何,看看AS3 regex metacharacters ... 这将极大地提高表达式的可读性并且更加健壮...

    我会选择这样的东西,真的:

    var r:RegExp = /(?:http|https):\/\/\S*/g;
    trace(str.replace(r, function (s:String,...rest):String { 
        return '<a href="' + s + '">' + s + '</a>' 
    } ));
    

    但真正的重点是global 标志...

    那么祝你好运...... :)

    问候

    back2dos

    【讨论】:

      猜你喜欢
      • 2011-06-15
      • 1970-01-01
      • 2014-07-02
      • 2012-07-15
      • 1970-01-01
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多