[英]how to remove empty line use regex in javascript and c#
用戶通過文本編輯器輸入內容,最后提交到數據庫。 在存儲到數據庫之前,我想在開始和結束時刪除內容中的空行(中間不能刪除)。
我想使用JavaScript和C#
樣本內容為:
<div>
<p><span><br></span></p>
<span>a<br/>bc</span>
<p>te<br>st</p>
<p>\n<span>\n</span></p>
<p><span><br/></span></p>
</div>
我需要的是:
<div>
<span>a<br/>bc</span>
<p>te<br>st</p>
</div>
誰能幫我?
好吧,如果我了解您要完成的工作,那么應該可以解決您的問題:
string input = @"
<div>
<p><span><br></span></p>
<span>a<br/>bc</span>
<p>te<br>st</p>
<p>\n<span>\n</span></p>
<p><span><br/></span></p>
</div>
";
string pattern = @"(<p>)?(\\n|<br/?>)?<span>(<br/?>|\\n)</span>(</p>)?";
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(pattern);
string final = reg.Replace(input, String.Empty);
Console.WriteLine(final);
}
上面的代碼將返回:
<div>
<span>a<br/>bc</span>
<p>te<br>st</p>
</div>
然后,您可以根據需要修剪任何線條。
在問題中沒有提到要在客戶端還是在服務器端清除內容。
如果應該在服務器上完成,請不要使用正則表達式。 為什么? 看到這個很好的答案。 請改用HTML解析器。 例如,使用HtmlAgiltyPack:
var doc = new HtmlDocument();
doc.LoadHtml(html);
foreach(var node in doc.DocumentNode.SelectNodes("//div|//span|//p"))
if (string.IsNullOrWhiteSpace(node.InnerText.Replace(@"\n", string.Empty)))
node.Remove();
var result = doc.DocumentNode.OuterHtml;
但這可以通過使用jQuery在客戶端上更簡單地完成(也無需使用正則表達式):
var dom = $(html);
dom.find('p,span,div').each(function() {
if ($(this).text().trim() == '')
$(this).remove();
});
var result = dom.wrap('<div>').parent().html();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.