用unicode替换\ n以正确显示html中的新行

时间:2018-05-03 14:03:45

标签: javascript html unicode

我有一个多行字符串:

assign R = A + B; 

我想将其注入HTML代码中。我设法用let str = 'line first \n line-second-preceded-with-a-few-spaces'; 替换所有空格,我想对replace(/ /g, '\u00a0')执行相同操作,但Wikipedia中提到的所有Unicode值都不起作用。

  

Unicode标准定义了符合的许多字符   应用程序应识别为行终止符:

\n
LF:    Line Feed, U+000A
VT:    Vertical Tab, U+000B
FF:    Form Feed, U+000C
CR:    Carriage Return, U+000D
CR+LF: CR (U+000D) followed by LF (U+000A)
NEL:   Next Line, U+0085
LS:    Line Separator, U+2028
PS:    Paragraph Separator, U+2029

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

您可以使用中断行\n替换<br/>,然后添加为innerHTML,如

let str = 'line first \n     line-second-preceded-with-a-few-spaces';
str = str.replace(/ /g, '\u00a0');
str = str.split("\n").join("<br/>")
document.getElementById("d").innerHTML = str;
<div id="d"></div>

或者您使用replace(/\n/g, "<br/>");。这也会做同样的事情

let str = 'line first \n     line-second-preceded-with-a-few-spaces';
str = str.replace(/ /g, '\u00a0').replace(/\n/g, "<br/>");
document.getElementById("d").innerHTML = str;
<div id="d"></div>

或者您也可以在\n标记中包含包含" "pre的字符串,将其视为换行符和空格

let str = 'line first \n     line-second-preceded-with-a-few-spaces';

document.getElementById("d").innerHTML = `<pre>${str}</pre>`;
<div id="d"></div>

注意:pre元素应该用于具有影响内容含义的印刷格式的文本,例如诗歌,ASCII艺术,成绩单,当然还有计算机代码