使用javascript定义一个长字符串

时间:2013-12-30 18:15:03

标签: javascript jquery

我有一个简单的问题,我似乎无法弄明白。在下面的代码中,我得到一个错误(test_str未定义),因为定义“var str =”的行分布在两行中。在“狐狸”这个词之后有一个CR LF,我想我的浏览器中的javascript引擎认为我想要一个新的声明。现在当然在这个例子中我可以简单地摆脱回车并把它全部放在一行来修复它。但我的真正意图是在一些生产代码中使用更长的字符串,我真的不想删除所有那些CR LF。

<html>
<head>
<script>
function test_str() {
  str = "  The quick brown 
  fox jumped over the log.";
  alert(str);
}
</script>
</head>
<body>
    <a href='javascript:void(0);' onclick='test_str();'>Test String</a>
</body>
</html>

7 个答案:

答案 0 :(得分:4)

只需将\放在每行的末尾,仍然在字符串

str = "  The quick brown \  // <---
fox jumped over the log.";

答案 1 :(得分:2)

最简单的方法是在行尾添加\

function test_str() {
  str = "  The quick brown \
  fox jumped over the log.";
  alert(str);
}

<强> jsFiddle example

答案 2 :(得分:1)

试试这个:

str = " the quick brown fox\r\n" + 
  "fox jumped over the lazy dog";

答案 3 :(得分:0)

在字符串中使用\r\n来表示CR LF:

str = "The quick brown\r\nfox jumped over the log.";

答案 4 :(得分:0)

字符串文字在JavaScript中不能跨越多行。您需要明确地将每一行继续到下一行:

var foo = "The quick brown fox\
 jumped over the lazy\
 dog";

或连接字符串文字:

var foo = "The quick brown fox " +
          "jumped over the lazy " +
          "dog";

我个人更喜欢后者,因为你可以更合理地缩进它,而不必考虑字符串中的空格,因为

var foo = "asdf \
           bar";

会产生类似“asdf bar”的字符串。

答案 5 :(得分:0)

尝试转义换行文字,

str = "  The quick brown \
      fox jumped over the log.";

答案 6 :(得分:0)

定义多行字符串的另一种方法是使用数组并将它们连接起来。这允许您轻松地为每一行定义一个新的行符(\n\r),假设您按行索引(""存储行,行之间没有字符分隔)。例如,下面将创建以下字符串:

  

快速棕色
  狐狸跳过日志。

str = ["  The quick brown ",
  "fox jumped over the log."].join("\n\r");//each line should be a new line