繁体   English   中英

如何将\n替换为<br>在 JavaScript 中?

[英]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")

可以这样做:

$('textarea').val().replace(/\n/g, "<br />");

编辑:对不起... javascript 中的正则表达式不应该被引用

工作示例

就像评论和其他答案中所说的那样,最好在服务器端进行。

但是,如果您想知道如何在客户端执行此操作,这是一个简单的解决方法:

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');
}

http://phpjs.org/functions/nl2br:480

我知道这是一个古老的问题/答案,但它是最早出现在谷歌搜索中的问题之一,并且在遥远的将来不再适用于当前的浏览器。

\n转换为<br />的正确答案(至少对我而言)是:

text = text.Replace(/\\n/g,"<br />");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM