CoffeeCat's IT Blog

在Javascript中给变量赋多行字符串的方法

    今天写JS的时候,遇到一个需求,我需要将一个文本文件的内容作为一个字符串赋值给一个变量,这个文本文件是多行的。首先,我想到了,将文本文件中的所有换行符替换成\n,将所有双引号替换成\",这样就可以将这个多行文本转换成单行文本了。不过,如果JS有类似于PHP的字符串定界符的话,就更好了。于是,在网上搜索了一下,找到了两个方法


我的文本文件内容:
Line1
Line2Line2
Line3


方法一(支持Firefox)

     这个方法的原理是生成一个XML节点。因为XML可以使用CDATA来生成多行文本。然后,再将这个节点转换成字符串,就可以得到一个多行文本了。不过这个方法只在支持E4X的浏览器上有效。经过测试,Firefox3.0支持,IE7.0不支持。

代码如下:

var str = (<r><![CDATA[
Line1
Line2Line2
Line3
]]
></r>).toString();

alert(str);


方法二(支持IE)

     这个方法相当有创意,是网络上某个高人的杰作。
     方法的原理是将多行文本写在一个函数体的多行注释内,然后,通过字符串解析函数,将多行文本分离出来,这样,整个文件内容也可以原封不动的复制到JS代码中。不过这个方法只在IE里支持,Firefox会将注释代码从函数体中移除。

Function.prototype.getMultiline = function() 

    
var lines = new String(this);  
    lines 
= lines.substring(lines.indexOf("/*\r\n"+ 4, lines.lastIndexOf("*/"));  
    
return lines; 
}   
var str = function() {  
/*
Line1
Line2Line2
Line3
*/
}.getMultiline();

alert(str);




Ferris
2008-12-10

posted on 2008-12-10 11:03 CoffeeCat 阅读(7717) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
<2008年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

公告

常用链接

留言簿(203)

随笔档案

收藏夹

搜索

最新评论

阅读排行榜

评论排行榜