如何删除所有的并在JQuery中将它们转换为换行符(\ n)?

时间:2011-01-04 22:56:25

标签: javascript jquery html css templates

我只是做replaceWith吗?什么是最好的方式?

function replaceBreaks(s){
            var content = $('<div>' + s + '</div>');
            content.find("br").replaceWith("\n");
            return content.html();
        }

4 个答案:

答案 0 :(得分:4)

尝试这样的事情:

$('br').text('\n').contents().unwrap();

首先,它将文本节点子项添加到\n的所有br元素中。然后它解开它们只留下它下面的文本。你可以在这里看到它:

http://jsfiddle.net/UgZNm/

答案 1 :(得分:1)

我找到了这个正则表达式,它应该处理各种格式问题:

function br2nl(input) {
    return input.replace(/<[bB][rR](\s+)?\/?>/g, "\n");
}

答案 2 :(得分:0)

我认为replaceWith是最好的解决方案,并且清晰易懂:

$(selector + ' br').replaceWith('\n');

这是一个显示实际情况的小提琴:http://jsfiddle.net/hHJvM/

答案 3 :(得分:0)

在没有实际HTML解析器的情况下解析HTML可能是一个坏主意,但正则表达式通常可以很好。

text.replace(/<br[^>]*>/gi, "\n");

这将取代&lt; br&gt;,<br/><br /><br some_attribute="value" />等等。

但是,如果您有</br>,则不会替换<br></br>。如果是这样,你可以试试这个:

text.replace(/<\/?br[^>]*>/gi, "\n");

如果你不介意<br></br>变成\ n \ n。