首页 文章

如何用<br />标签替换字符串中的所有换行符?

提问于
浏览
423

如何使用Javascript从值读取换行符并用 br 标记替换所有换行符?

例:

从PHP传递的变量如下:

"This is man.

     Man like dog.
     Man like to drink.

     Man is the king."

在Javascript转换后,我希望我的结果看起来像这样:

"This is man

Man like dog.
Man like to drink.

Man is the king."

10 回答

  • 2

    无论系统如何:

    my_multiline_text.replace(/$/mg,'<br>');
    
  • 274

    如果你从PHP发送变量,你可以在发送之前用它来获取它:

    $string=nl2br($string);
    
  • 944

    没有正则表达式:

    str = str.split("\n").join("
    ");
  • 0

    当值来自TextBox时,这对我有用:

    string.replace(/\n|\r\n|\r/g, '
    ');
  • 64

    如果接受的答案不适合您,那么您可以尝试 .

    str.replace(new RegExp('\n','g'), '
    ')

    它对我有用 .

  • 6

    这适用于来自textarea的输入

    str.replace(new RegExp('\r?\n','g'), '
    ');
  • 4

    如果你关心的只是显示换行符,你可以用CSS做到这一点 .

    HTML

    <div class="white-space-pre">Some test
    with linebreaks</div>
    

    CSS

    .white-space-pre {
        white-space: pre-wrap;
    }
    

    jsfiddle https://jsfiddle.net/yk1angkz/125/

    Note :注意代码格式和缩进,因为 white-space: pre-wrap 将显示 all 空格(除了文本后面的最后一个换行符,请参见小提琴) .

  • 35

    这会将所有返回值转换为HTML

    str = str.replace(/(?:\r\n|\r|\n)/g, '<br>');
    

    如果你想知道什么?:意味着 . 它被称为非捕获组 . 这意味着括号内的正则表达式组不会保存在内存中以便稍后引用 . 您可以查看这些线程以获取更多信息:
    https://stackoverflow.com/a/11530881/5042169 https://stackoverflow.com/a/36524555/5042169

  • 2

    对于那些只想允许最大值的人2 <br> 连续,你可以使用这个:

    let text = text.replace(/(\r?\n){2,}/g, '<br><br>');
    text = text.replace(/(\r?\n)/g, '<br>');
    

    第一行:搜索 \n\r\n ,其中至少有两个是连续的,例如 \n\n\n\n . 然后用2 br 替换它

    第二行:搜索所有单个 \r\n\n 并将其替换为 <br>

  • 5

    编码文本的其余部分以防止可能的脚本注入攻击也很重要

    function insertTextWithLineBreaks(text, targetElement) {
        var textWithNormalizedLineBreaks = text.replace('\r\n', '\n');
        var textParts = textWithNormalizedLineBreaks.split('\n');
    
        for (var i = 0; i < textParts.length; i++) {
            targetElement.appendChild(document.createTextNode(textParts[i]));
            if (i < textParts.length - 1) {
                targetElement.appendChild(document.createElement('br'));
            }
        }
    }
    

相关问题