在 JavaScript 中如何创建多行字符串(JavaScript Multiline String)

最基本的做法是:
js 代码
 
  1. var str = "111\n222\n333";  

但是这样不好排版。JavaScript 本身支持“\”的断句方式,于是可以这样写:
js 代码
 
  1. var str = "111\n\ 
  2. 222\n\ 
  3. 333";  

但是还是不爽,平白无故加上了一个反斜杠。有人提出利用 XML 结构来实现,但是具有语法高亮的编辑器通常会被这种写法弄糊涂。

高人无处不在,有人竟然利用注释。个人觉得这是最方便的了。我将其改了一下:
js 代码
 
  1. Function.prototype.getMultiLine = 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.write(ffff.getMultiLine());  

这样虽然多写了一点,但是能够保持多行文本的原样,值得。
 


方法一(支持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);

相关文章:

  • 2022-12-23
  • 2021-07-31
  • 2021-09-13
  • 2022-12-23
  • 2021-10-05
  • 2021-06-13
  • 2021-11-28
  • 2021-09-13
猜你喜欢
  • 2021-12-24
  • 2022-12-23
  • 2021-06-26
  • 2021-11-29
  • 2022-12-23
  • 2022-01-25
  • 2022-12-23
相关资源
相似解决方案