在函数之前用变量 Javascript 中的 space 替换新行

Replace new line with space in variable Javascript before function

我有以下代码片段:

<script>
    var textstring = 
    'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. 
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.';

function insertNewLines(textstr, nos) {

var resulttext = '';
textstr = textstr.replace("\n", "<br />");
while (textstr.length > 0) {

resulttext += textstr.substring(0, nos) + '<br/>';
textstr = textstr.substring(nos);

}

textstring 中的文本是 2 行,即有一个 \r\n 将第一行与第二行分开。 当我调用该函数时,它甚至在我得到替换部分之前就给我一个错误。 (调试器说由于换行,块没有正确关闭)

有什么办法可以解决这个问题吗?我只需要摆脱换行符或者更好地保留它但让脚本 运行 正确。

感谢您的帮助。

流浪汉

首先像这样定义你的刺痛,

var textstring ='Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa.\
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.';

在你的函数中添加一个括号,它应该可以工作。

function insertNewLines(textstr, nos) {

var resulttext = '';
textstr = textstr.replace("\n", "<br />");
while (textstr.length > 0) {

resulttext += textstr.substring(0, nos) + '<br/>';
textstr = textstr.substring(nos);

}
}

该代码中有两个基本语法错误:

  1. 除非用反斜杠转义,否则字符串文字中不能有换行符。 (您可以在 ES2015 模板文字中使用,但不能在字符串文字中使用。)如果这样做,换行符将 not 包含在字符串中。请改用 \r\n

  2. 您在函数

  3. 上缺少结尾 }

除此之外,没有必要循环; JavaScript 的 replace 可以接受带有 g 标志的正则表达式(对于 "global"),因此:

var textstring =
    'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa.\r\nCum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.';

function insertNewLines(textstr, nos) {
    return textstr.replace(/\r\n/g, "<br />");
}

console.log(insertNewLines(textstring));

我用 \r\n 替换了文字换行符,然后用对 replace.

的单个调用替换了循环

JavaScript 字符串中的换行符应使用反斜杠转义 (\)。

您的变量 textstring 也需要更新,如下所示。

var textstring =
  'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. \
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.';

function insertNewLines(textstr, nos) {
  var resulttext = '';
  textstr = textstr.replace("\n", "<br/>");

  while (textstr.length > 0) {
    resulttext += textstr.substring(0, nos) + '<br/>';
    textstr = textstr.substring(nos);
  }
}

您必须使用反斜杠对文字字符串进行转义,而且没有右括号。下面的代码用反斜杠转义并且脚本正在运行。然而输出是你想要的没有被检查。

var textstring = 
'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo  ligula eget dolor. Aenean massa.\
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.';

insertNewLines(textstring,2);
function insertNewLines(textstr, nos) {

var resulttext = '';
textstr = textstr.replace("\n", "<br />");
while (textstr.length > 0) {

resulttext += textstr.substring(0, nos) + '<br/>';
textstr = textstr.substring(nos);

 }
}