我的文字为
<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>
由于
答案 0 :(得分: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
答案 1 :(得分: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"