簡體   English   中英

如何刪除空行在javascript和c#中使用正則表達式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM