问候,我可以看到,当我在Textarea控件中设置HTMLTEXT时,文本属性包含文本的HTML免费版本。因此,有一个解析器可以从内容中撕下HTML,这对我的目的非常有用。但是,基于Flex源代码,HTML的设置是在Uitextfield.as中完成的,这是TextArea的TextField成员的类型。进行工作的行是:super.htmltext = value;在功能中覆盖公共功能集htmltext(值:字符串):void

试图跟随类Hieararchy,我最终参加了Flextextfield班,这扩展了Flash Player的Textfield类。

看来我追求的功能是在Flash Player中。因此,有什么方法可以访问此HTML清洁功能吗?我在这里错过了什么吗?

最好的问候Seref

有帮助吗?

解决方案

如果Regex使您失败,这是您可能想检查的东西:

var t:String = "asd <span>This is <font>some</font> text <b> :) </b> </span> \nand more";
function stripTags(x:XML):String {
  var t:String = "";
  var children:XMLList = x.children();
  var child:XML;
  for(var i:Number = 0; i < children.length(); i++){
    child = children[i];
    if(child.nodeKind() == "text")
      t += child.toString();
    else if(child.nodeKind() == "element")
      t += stripTags(child);
  }
  return t;
}
var x:XML = new XML("<root>" + t + "</root>");
XML.ignoreWhitespace = false;
var s:String = stripTags(x);
trace(s);

PS:我尚未测试此ActionScript代码,这是我测试和发现工作的等效JavaScript代码。我认为这在ActionScript中会起作用,因为两者都遵循Ecmascript。

var t = "asd <span>This is <font>some</font> text <b> :) </b> </span> \nand more";
function stripTags(str){
  function strip(x){
    var t = "";
    var children = x.children();
    var child;
    for(var i = 0; i < children.length(); i++){
      child = children[i];
      if(child.nodeKind() == "text")
        t += child.toString();
      else if(child.nodeKind() == "element")
        t += strip(child);
    }
    return t;
  }
  var xml = new XML("<root>" + str + "</root>");
  XML.ignoreWhitespace = false;
  return strip(xml);
}
var s = stripTags(t);
console.log(s);

输出:

asd This is some text :)  
and more

其他提示

不,没有办法访问Flash Player本地类中的代码。

但是,您应该能够使用正则表达式来轻松解析内容中的所有HTML标签。

虽然,未经测试,这是 一个选项 在Google中出现了。您可以在Flex中使用它。因此,您可能可以做这样的事情:

var regEx : RegExp = new RegExp('<(.|\n)*?>');
var noHTMLText = htmlText.replace(regEx , '');

当然,这是在浏览器中写的。 有关REGEX的更多信息.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top