在腾讯微博上发现这个,立马在博客做个记录。在AS3中,声明多行字符串(或叫做原样输出),可以这样做(注意:没有双引号):
private var myString:String = <![CDATA[第一行
第二行
第三行]]>;
为什么叫原样输出?因为我发现,字符串在 CDATA 标签里是什么样的,输出时就是什么样的。像 html 的 pre 标签一样。有换行就换行,每行前面有空格的,输出时就有空格。
我的理解:这其实就是 XML 特有的 CDATA 标签。在 CDATA 标签里,无论是什么字符,都不会经过转换,都是原样输出。类似的技巧还是有的,例如在 XML 里插入变量,在编译后会把变量值插入到对应位置:
private var myName:String = “Y.Boy“;
private var myXML:XML = <user><name>{MyName}</name><user>;
// 输出:<user><name>Y.Boy</name><user>
2011.3.11更新:
在这里(http://ticore.blogspot.com/2011/03/as3-multiline-cdata-string.html,需要翻墙)看到一些需要补充的内容:
另外假如 XML 设置为保留空白字符,这样的写法会出错:
XML.ignoreWhitespace = false;
var str:String = <![CDATA[
多行
字串]]>;
// TypeError: Error #1088: 文件中根元素之后的标签必须使用正确格式。
解決的方式很简单,用一个根标签包起来就行了(这相当于是使用一个XML对象包起来,然后默认调用 toString() 方法,把返回值赋给变量 str ):
XML.ignoreWhitespace = false;
var str:String = <><![CDATA[
多行
字串]]></>;
而且還能用來包覆多個 CDATA 區塊呢:
var str:String = <>
<![CDATA[字串1]]>
<![CDATA[字串2]]>
</>;
trace(str);