我有一个字符串变量,其中包含一些HTML格式的内容。
像var strLabel:String = "This is <b>Test</b>;
但是在运行时我得到字符串的前10个字符并将其显示在另一个控件中。 为此,做了什么
txtLabelName.Text = String(strLabel).substr(0,10) + ' ...';
但是在输出中我得到This is <b
。基本上它将HTML相关标签也视为文本。但是我的代码在计算子字符串时必须省略HTML标记。
请有人帮我这样做吗?
答案 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;
}