在JavaScript中如何创建多⾏字符串
(JavaScriptMultilineString)
在 JavaScript 中如何创建多⾏字符串(JavaScript Multiline String)
最基本的做法是:
js 代码函数prototype
1. var str = "111\n222\n333";
但是这样不好排版。JavaScript 本⾝⽀持“\”的断句⽅式,于是可以这样写:
js 代码
1. var str = "111\n\
2. 222\n\
3. 333";
但是还是不爽,平⽩⽆故加上了⼀个反斜杠。有⼈提出利⽤ XML 结构来实现,但是具有语法⾼亮的编辑器通常会被这种写法弄糊涂。
⾼⼈⽆处不在,有⼈竟然利⽤注释。个⼈觉得这是最⽅便的了。我将其改了⼀下:
js 代码
1. MultiLine = function() {
2. var lines = new String(this);
3. lines = lines.substring(lines.indexOf("/*") + 3, lines.lastIndexOf("*/"));
4. return lines;
5. }
6.
7. var ffff = function() {
8. /*
9. 张三去倒⽔<br/>
10. <strong>天哪!</strong>
11. */
12. }
13.
14. document.MultiLine());
这样虽然多写了⼀点,但是能够保持多⾏⽂本的原样,值得。
今天写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会将注释代码从函数体中移除。
Multiline = 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);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论