2015-06-03 100 views
1

我有幾個換行符標記文本,像這樣jQuery的更換BR標籤

<br></br> 

和幾雙換行符像這樣

<br></br><br></br> 

我想擺脫單一<br></br>的,但我想要保持雙重的 使用jQuery或Jscript我怎麼能告訴它做到這一點 當我使用.filter("<br></br>")它沒有工作,因爲它擺脫了兩個

有沒有辦法用replaceWith替換<br></br><br></br>的實例?或者一些其他的方式

+1

你能告訴我你想要的結果的例子嗎?您可以將所有'

'替換爲'
'。那是你要的嗎?儘管你可以使用javascript [replace()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/replace)方法。 –

+1

@RickHitchcock:的確如此。但是,它是有效的XHTML;而OP沒有在問題中指定文檔類型。不過,問題不在於渲染,而在於文本處理。 – Amadan

回答

3

最簡單的方法就是三個步驟:

text = text. 
    replace(/<br><\/br><br><\/br>/g, '____MAGICMARKER____'). 
    replace(/<br><\/br>/g, ''). 
    replace(/____MAGICMARKER____/g, '<br></br><br></br>') 

希望____MAGICMARKER____從來都不是,也將永遠,是你的文本的一部分。另一種可能性(和更好的,萬無一失一個)將是:

text = text.replace(/(<br><\/br>)+/g, function(all, once) { 
    if (all == once) return ""; 
    return all; 
}); 

注意,這是所有寫假設的問題你的前提是正確的:你有一個文本(即一個字符串)。如果您有文檔片段,那麼您想在其innerHTML上執行此操作。

0

利用html嘗試,RegExp/<br><br>+[\s|\n]/g匹配<br><br>後跟空格字符或換行字符

$("body").html(function(i, html) { 
 
    return html.replace(/<br><br>+[\s|\n]/g, "") 
 
}); 
 

 
console.log($("body").html());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> 
 
</script> 
 
<body> 
 
<br></br> 
 
and several double line breaks like so 
 

 
<br></br><br></br> 
 
<br></br> 
 
and several double line breaks like so 
 

 
<br></br><br></br> 
 
<br></br> 
 
and several double line breaks like so 
 

 
<br></br><br></br> 
 
</body>