我只是做replaceWith
吗?什么是最好的方式?
function replaceBreaks(s){
var content = $('<div>' + s + '</div>');
content.find("br").replaceWith("\n");
return content.html();
}
答案 0 :(得分:4)
尝试这样的事情:
$('br').text('\n').contents().unwrap();
首先,它将文本节点子项添加到\n
的所有br元素中。然后它解开它们只留下它下面的文本。你可以在这里看到它:
答案 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。