Как получить подстроку из строковой переменной, имеющей теги HTML - PullRequest
0 голосов
/ 04 марта 2011

У меня есть строковая переменная, назначенная некоторому Содержанию в формате HTML. Как-то так var strLabel:String = "This is <b>Test</b>;

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

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

Но на выходе я получаю как This is <b. В основном это рассматривает связанные теги HTML также как текст. Но мой код должен пропускать теги HTML при расчете подстроки.

Пожалуйста, кто-нибудь поможет мне сделать это?

Ответы [ 2 ]

2 голосов
/ 04 марта 2011

Используйте это регулярное выражение для удаления тегов html (более или менее):

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

Это очень простое регулярное выражение для удаления всех тегов, поэтому оно не будет работать с более сложными тегами (вероятно).

0 голосов
/ 21 марта 2011

Я получил этот код из какого-то блога.Это работает отлично

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;
    }
...