[英]How to replace \n with <br /> in JavaScript?
我有一个文本区域,当用户按下回车键时,我在其中插入\n
。 此文本区域中的代码通过jQuery.ajax()
发送到 WCF 服务。 我无法将\n
保存在 DB 中,因为它不会显示在使用该服务的其他应用程序中。
如何将\n
替换为<br />
标签?
解决方案
好吧,你们中的许多人都尝试过,有些人使用带有 /g(全局修饰符)的 Javascript 正则表达式得到了正确的结果。 最后我 \n 插入了两次,我不知道为什么,我唯一的猜测是按键事件上的 jQuery 创建了我调试的双 \n。
$('#input').keypress(function (event) {
if (event.which == '13') {
inputText = $('#input').val() + '\n';
$('#input').val(inputText);
}
});
更换为全球scope
$('#input').val().replace(/\n/g, "<br />")
或者
$('#input').val().replace("\n", "<br />", "g")
就像评论和其他答案中所说的那样,最好在服务器端进行。
但是,如果您想知道如何在客户端执行此操作,这是一个简单的解决方法:
textareaContent.replace(/\\n/g, "<br />");
其中textareaContent
是 textarea 中数据的变量。
编辑:更改为全局替换,而不仅仅是第一个匹配项。
如果你支持 PHP 你应该看看这个: http://php.net/manual/en/function.nl2br.php
您可以使用简单的 javascript 字符串 function。
string.replace("\n", "<br>")
例如,您可以使用内置的 javascript 替换 function 并借助正则表达式
$('#input').val().replace(/\n\r?/g, '<br />')
此代码将返回所有替换为<br>
的输入
以下将用<br />
替换\n
的所有实例:
while (message.indexOf("\\n") !== -1) {
message = message.replace("\\n", "<br />");
}
在您的 WCF 服务中,您不能只使用String.Replace
吗?
text = text.Replace("\n","<br />");
var replaced = $('#input').val().replace("\n", "<br/>");
在其他答案的基础上,php 可能做得最好。 现在假设您不想 ajax 这个(这将毫无意义并导致不必要的服务器负载),您可能应该使用phpjs.org的 javascript这个 ZC1C425268E68385D1AB5074C17A4端口:
function nl2br (str, is_xhtml) {
// Converts newlines to HTML line breaks
//
// version: 1103.1210
// discuss at: http://phpjs.org/functions/nl2br // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + improved by: Philip Peterson
// + improved by: Onno Marsman
// + improved by: Atli Þór
// + bugfixed by: Onno Marsman // + input by: Brett Zamir (http://brett-zamir.me)
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + improved by: Brett Zamir (http://brett-zamir.me)
// + improved by: Maximusya
// * example 1: nl2br('Kevin\nvan\nZonneveld'); // * returns 1: 'Kevin\nvan\nZonneveld'
// * example 2: nl2br("\nOne\nTwo\n\nThree\n", false);
// * returns 2: '<br>\nOne<br>\nTwo<br>\n<br>\nThree<br>\n'
// * example 3: nl2br("\nOne\nTwo\n\nThree\n", true);
// * returns 3: '\nOne\nTwo\n\nThree\n' var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '' : '<br>';
return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2');
}
我知道这是一个古老的问题/答案,但它是最早出现在谷歌搜索中的问题之一,并且在遥远的将来不再适用于当前的浏览器。
将\n
转换为<br />
的正确答案(至少对我而言)是:
text = text.Replace(/\\n/g,"<br />");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.