locked
Как удалить пробелы? RRS feed

  • Вопрос

  • пользуюсь библиотекой HtmlAgilityPack.Статья на сайте разбита на несколько частей,с помощью тега <Br/>.когда на телефоне появляется статья,то между абзацами большое расстояние.как его сократить?
    20 января 2013 г. 16:10

Ответы

  • Если нужно убрать именно элементы <br>, то следует использовать возможности библиотеки, а не подгонять строковые функции. Примерно так:

    var brs = TextState.SelectNodes("br");
    foreach (var br in brs)
        TextState.RemoveChild(br);

    Оно?

    Если нужно удалить именно пустые строки, то есть символы перевода строки, то можно примерно так:

    string nl = Environment.NewLine;
    string cleanText = TextState.InnerText.Replace(nl + nl, nl);

    Не?

    • Помечено в качестве ответа xero-rock 22 января 2013 г. 10:18
    22 января 2013 г. 9:30

Все ответы

  • var text = "lalalalalal <Br/> lalalal"; var cleanText = text.Replace("<Br/>","");


    Если именно убрать.
    • Изменено coshmos 20 января 2013 г. 20:28
    20 января 2013 г. 20:27
  • Не помогло
    21 января 2013 г. 3:50
  • Строка, к которой применяется Replace содержит "<Br/>"? Важен регистр и количество пробелов. Смотреть через отладку (Debug). Есть вероятность, что он конвертируется в перевод строки, тогда убирать по другому (text.Replace("\n","");). Кому скармливаете готовый контент?
    21 января 2013 г. 5:15
  • (text.Replace("\n","") это тоже пробовал.Даже в интернете прочитал,что так можно (text.Replace("\\n","");
    Ниже код:
    HtmlNode TextState = doc.DocumentNode.SelectSingleNode("//div[@class='block2_textblock update_block2_textblock_ver1']");
      var res1 = System.Net.HttpUtility.HtmlDecode(TextState.InnerHtml);
                var cleanText = res1.Replace("<br/>","");
    
    Когда использую InnerHtml,то в почему то отображается <br>,а не <br/>.
    21 января 2013 г. 5:30
  • Ну почему так отображается не важно (стандарты и, если интересно, то гуглится по <br> vs <br/>). Значит замещать нужно <br>.
    21 января 2013 г. 5:40
  • И так тоже не получилось.
    Статья выглядит вот так:

    Часть№1
    <br/>
    
    <br/>
    
    Часть№2
    
    <br/>
    
    <br/>


    22 января 2013 г. 6:14
  • Если нужно убрать именно элементы <br>, то следует использовать возможности библиотеки, а не подгонять строковые функции. Примерно так:

    var brs = TextState.SelectNodes("br");
    foreach (var br in brs)
        TextState.RemoveChild(br);

    Оно?

    Если нужно удалить именно пустые строки, то есть символы перевода строки, то можно примерно так:

    string nl = Environment.NewLine;
    string cleanText = TextState.InnerText.Replace(nl + nl, nl);

    Не?

    • Помечено в качестве ответа xero-rock 22 января 2013 г. 10:18
    22 января 2013 г. 9:30
  • Спасибо.Стало намного лучше выглядеть.Второй метод помог немного.Но все равно одна пустая строчка осталась свободной.Думаю это из за того,что между <br/> есть одна пустая строчка.
    • Изменено xero-rock 22 января 2013 г. 10:20
    22 января 2013 г. 10:19