jquery删除新行,然后用block元素包装textnodes

ang*_*iwi 8 javascript regex jquery

我有一些像这样的段落:

"这是第一段.r\r \n \n这是第二个在\n \n \n \n \n \n之后有很多新行的那个和最后一段.\n\r \n"

我想删除新行并用<p>标记包装每个段落.我期待输出如下:

<p>This is the first para.</p>
<p>This is the second one with lot of new line after</p>
<p>And the last para.</p>
Run Code Online (Sandbox Code Playgroud)

Bra*_*tie 11

var d = "line 1\n\nline2\n\n\n\nline3";
$('body').append('<p>'+d.replace(/[\r\n]+(?=[^\r\n])/g,'</p><p>')+'</p>');
Run Code Online (Sandbox Code Playgroud)

也许这样的事情?

如果您发现该行在开头或结尾包含任何新行/回车,请记住.trim()在替换值之前先调用字符串(使用此示例d.trim().replace(...))

更强大的解决方案

function p(t){
    t = t.trim();
    return (t.length>0?'<p>'+t.replace(/[\r\n]+/,'</p><p>')+'</p>':null);
}
document.write(p('this is a paragraph\r\nThis is another paragraph'));
Run Code Online (Sandbox Code Playgroud)

PHP版本:

$d = "paragraph 1\r\nparagraph 2\r\n\r\n\r\nparagraph3";
echo "<p>".preg_replace('/[\r\n]+/','</p><p>',$d)."</p>";
Run Code Online (Sandbox Code Playgroud)

http://www.ideone.com/1TRhh