1

我有文字

<p>Some text to extract</p>

有没有一种方法可以让我获取 as3 中标签之间的文本。那只是“要提取的一些文本”。

我试过使用正则表达式

string.match(/<p>(.*?)<\/p>/g)

但它返回<p>标签。

同样需要从中提取文本:

<caption><![CDATA[<p>Some text to extract.<span> -- Span text</span></p>]]></caption>

谢谢

4

2 回答 2

1

这应该这样做:)

var reg:RegExp = /<p>(.*?)<\/p>/gi;

var str:String = "<p>Some text to extract</p>";

var raw:String = str.replace(reg, "$1");

trace("str", str);//str <p>Some text to extract</p>
trace("raw", raw);//raw Some text to extract
于 2013-03-12T08:35:06.340 回答
1

如果您的标签是正确的,您可以尝试将其解析为 xml。这将适用于您给定的示例:

var input:String = "<p>Some text to extract</p>";
var xml:XML = new XML(input);
trace(xml.text().toString()); // traces "Some text to extract"

编辑

以下不是一个真正干净的答案......直到我花了一些时间弄乱它,我才能得到它。您可能不想接受这个作为答案,但我正在发布它,因为我确实设法得到了结果......也许其他人可以让它更干净。

我从来没有真正遇到过我感兴趣的节点(

本例中的节点)具有文本内容和一个子节点(与我的 xml 中的 CDATA 相同)。下面的代码是经过一些随机猜测和检查 api。每天学些新东西。=b

var inputString:String = "<caption><![CDATA[<p>Some text to extract.<span> -- Span text</span></p>]]></caption>";

var xml:XML = new XML(inputString);

// oddly this seems to filter out the caption and CDATA tag...but the resulting output is all in 1 element still
trace(xml); // traces out: <p>Some text to extract.<span> -- Span text</span></p>

xml = new XML(xml.toString()); // turn this into xml again

trace(xml); // this looks better now...traces out the expected xml

trace("{"+ xml.p +"}"); // traces out blank for some reason...
trace(xml.span); // traces out the expected span tag contents: "-- Span text"

trace(xml.descendants()[0]); // traces out "Some text to extract." -got it!
trace(xml.descendants()[1]); // traces out "-- Span text"
于 2013-03-12T08:38:35.083 回答