如何从具有HTML标记的字符串变量中获取子字符串

时间:2011-03-04 08:17:24

标签: flex actionscript-3 text substring

我有一个字符串变量,其中包含一些HTML格式的内容。 像var strLabel:String = "This is <b>Test</b>;

这样的东西

但是在运行时我得到字符串的前10个字符并将其显示在另一个控件中。 为此,做了什么

txtLabelName.Text = String(strLabel).substr(0,10) + ' ...';

但是在输出中我得到This is <b。基本上它将HTML相关标签也视为文本。但是我的代码在计算子字符串时必须省略HTML标记。

请有人帮我这样做吗?

2 个答案:

答案 0 :(得分:2)

使用此正则表达式来删除html标记(或多或少):

txtLabelName.text = strLabel.replace(/\<.+?\>/g, '').substr(0, 10) + ' ...';

剥离所有标签是一个非常简单的正则表达式,因此它不适用于更复杂的标签(可能)。

答案 1 :(得分:0)

我从一些博客那里得到了这个代码。这是完美的工作

public static function stripHtmlTags(html:String, tags:String = ""):String
    {
        var tagsToBeKept:Array = new Array();
        if (tags.length > 0)
            tagsToBeKept = tags.split(new RegExp("\\s*,\\s*"));

        var tagsToKeep:Array = new Array();
        for (var i:int = 0; i < tagsToBeKept.length; i++)
        {
            if (tagsToBeKept[i] != null && tagsToBeKept[i] != "")
                tagsToKeep.push(tagsToBeKept[i]);
        }

        var toBeRemoved:Array = new Array();
        var tagRegExp:RegExp = new RegExp("<([^>\\s]+)(\\s[^>]+)*>", "g");

        var foundedStrings:Array = html.match(tagRegExp);
        for (i = 0; i < foundedStrings.length; i++) 
        {
            var tagFlag:Boolean = false;
            if (tagsToKeep != null) 
            {
                for (var j:int = 0; j < tagsToKeep.length; j++)
                {
                    var tmpRegExp:RegExp = new RegExp("<\/?" + tagsToKeep[j] + "( [^<>]*)*>", "i");
                    var tmpStr:String = foundedStrings[i] as String;
                    if (tmpStr.search(tmpRegExp) != -1) 
                        tagFlag = true;
                }
            }
            if (!tagFlag)
                toBeRemoved.push(foundedStrings[i]);
        }
        for (i = 0; i < toBeRemoved.length; i++) 
        {
            var tmpRE:RegExp = new RegExp("([\+\*\$\/])","g");
            var tmpRemRE:RegExp = new RegExp((toBeRemoved[i] as String).replace(tmpRE, "\\$1"),"g");
            html = html.replace(tmpRemRE, "");
        } 
        return html;
    }