Как удалить пустую строку, используйте регулярные выражения в JavaScript и C # - PullRequest
0 голосов
/ 14 марта 2012

пользовательский контент вводится текстовым редактором и, наконец, передается в базу данных.перед сохранением в базе данных я хочу удалить пустую строку в содержимом в начале и в конце (середина не может быть удалена).

я хочу использовать 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>

кто может мне помочь?

Ответы [ 2 ]

1 голос
/ 14 марта 2012

Ну, если я понимаю, что вы пытаетесь выполнить, это должно решить вашу проблему:

        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>

Затем вы можете приступить к обрезкекогда-либо линии, как это выглядит так, как будто это нужно.

0 голосов
/ 14 марта 2012

В вопросе не упоминается, хотите ли вы очистить свой контент на стороне клиента или сервера.

Если это нужно сделать на сервере, пожалуйста, не используйте для этого regex.Зачем?Смотрите этот отличный ответ.Вместо этого используйте 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();
...