我有一个包含新行的字符串。我想将它们转换为HTML <br>
,但我很难检测到它们。
想象一下像这样设置的JavaScript字符串:
var foo = "Bob
is
cool";
它们是我需要检测的新线条。他们没有使用\n
特殊字符 - 它们只是普通格式。
答案 0 :(得分:63)
它不起作用的原因是因为javascript字符串必须在下一个换行符之前终止(显然不是\n
)。 \n
存在的原因是允许开发人员以简单的方式将换行符(ASCII:10)放入其字符串中。
当你有一个如下所示的字符串时:
//Note lack of terminating double quote
var foo = "Bob
您的代码将在此时出现语法错误并停止运行。
如果您希望有一个跨越多行的字符串,您可以在终止该行之前插入一个反斜杠字符“\
”,如下所示:
//Perfectly valid code
var foo = "Bob \
is \
cool.";
但是,该字符串不在字符串被分成不同行的位置包含\n
个字符。将换行符插入字符串的唯一方法是插入值为10的字符,其中最简单的方法是\n
转义字符。
var foo = "Bob\nis\ncool.";
答案 1 :(得分:29)
更新:我只是came across JavaScript-ES6中一个名为Template literals的精彩语法设计。您想要做的事情可以使用`
(反引号或重音符号)完成。
var foo = `Bob
is
cool`;
在这种情况下,foo === "Bob\nis\ncool"
为真。
为什么设计师决定` ... `
可以保持未终止状态,但" ... "
和' ... '
在其中包含换行符是非法的。
确保定位浏览器支持ES6指定的Javascript实现。
P上。 S.这种语法有一个非常酷的功能,类似于PHP和更多脚本语言,即“Tagged template literals”,你可以在其中使用这样的字符串:
var a = 'Hello', b = 'World';
console.log(`The computer says ${ a.toUpperCase() }, ${b}!`);
// Prints "The computer says HELLO, World!"
答案 2 :(得分:6)
检查\n
或\r
或\r\n
。
新行有多种表示形式,请参阅http://en.wikipedia.org/wiki/Newline#Representations
答案 3 :(得分:3)
我认为你不明白\ n是如何运作的。结果字符串仍然只包含一个值为10的字节。这用javascript源代码表示\ n。
您发布的代码段实际上并不起作用,但如果确实如此,则新行将等同于\ n,除非它是一个Windows样式的换行符,在这种情况下它将是\ r \ñ。 (但即使替换仍然有效)。
答案 4 :(得分:2)
您可以使用以下功能:
function nl2br (str, is_xhtml) {
var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br />' : '<br>';
return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2');
}
像这样:
var mystr="line\nanother line\nanother line";
mystr=nl2br(mystr);
alert(mystr);
这应该提醒line<br>another line<br>another line
函数的来源是从这里: http://phpjs.org/functions/nl2br:480
这模仿了php中的nl2br
函数......
答案 5 :(得分:1)
我认为他们无论如何都使用\n
甚至不可见,或者他们使用\r
。因此,只需将\n
或\r
替换为<br/>
答案 6 :(得分:1)
这是对@Andrew Dunn上面帖子的一个小小的补充
组合2可以生成可读的JS和匹配的输出
IData<IPerson>
答案 7 :(得分:0)
我用来转义JS中换行符的查询字符串:
LOAD DATA LOCAL INFILE 'Data.csv' INTO TABLE DEMO FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 ROWS;
这涉及到新的ES6语法-模板文字``,我尝试将'\ n'更改为'\ r \ n'并在我的情况下完美运行。
PS:此示例是我向CSV数据库上传CSV数据的查询。