Что лучший способ состоит в том, чтобы удалить <br> теги из конца строки?

Реализация обработки сокетов будет хорошей, если вы хотите, чтобы два сервера взаимодействовали друг с другом. http://php.net/manual/en/sockets.examples.php

6
задан Electrons_Ahoy 25 September 2008 в 18:42
поделиться

7 ответов

Поскольку @Mitch сказал,

//  using System.Text.RegularExpressions;

/// <summary>
///  Regular expression built for C# on: Thu, Sep 25, 2008, 02:01:36 PM
///  Using Expresso Version: 2.1.2150, http://www.ultrapico.com
///  
///  A description of the regular expression:
///  
///  Match expression but don't capture it. [\<br\s*/?\>], any number of repetitions
///      \<br\s*/?\>
///          <
///          br
///          Whitespace, any number of repetitions
///          /, zero or one repetitions
///          >
///  End of line or string
///  
///  
/// </summary>
public static Regex regex = new Regex(
    @"(?:\<br\s*/?\>)*$",
    RegexOptions.IgnoreCase
    | RegexOptions.CultureInvariant
    | RegexOptions.IgnorePatternWhitespace
    | RegexOptions.Compiled
    );
regex.Replace(text, string.Empty);
12
ответ дан 8 December 2019 в 04:32
поделиться

Я уверен, что это не лучший способ или, но он должен работать, если у Вас нет конечных пробелов или чего-то.

while (myHtmlString.EndsWith("<br>"))
{
    myHtmlString = myHtmlString.SubString(0, myHtmlString.Length - 4);
}
3
ответ дан 8 December 2019 в 04:32
поделиться

Небольшое изменение кода bdukes, который должен быть быстрее, поскольку это не отслеживает в обратном порядке.

public static Regex regex = new Regex(
    @"(?:\<br[^>]*\>)*$",
    RegexOptions.IgnoreCase
    | RegexOptions.CultureInvariant
    | RegexOptions.IgnorePatternWhitespace
    | RegexOptions.Compiled
);
regex.Replace(text, string.Empty);
4
ответ дан 8 December 2019 в 04:32
поделиться

Вы могли также попробовать (если разметка, вероятно, будет допустимым деревом), что-то подобное:

string s = "<markup><div>Text</div><br /><br /></markup>";

XmlDocument doc = new XmlDocument();
doc.LoadXml(s);

Console.WriteLine(doc.InnerXml);

XmlElement markup = doc["markup"];
int childCount = markup.ChildNodes.Count;
for (int i = childCount -1; i >= 0; i--)
{
    if (markup.ChildNodes[i].Name.ToLower() == "br")
    {
        markup.RemoveChild(markup.ChildNodes[i]);
    }
    else
    {
        break;
    }
}
Console.WriteLine("---");
Console.WriteLine(markup.InnerXml); 
Console.ReadKey();

Код выше является немного "временной памятью", но если Вы вырезаете и вставляете его в Консольное приложение и выполняете его, это действительно работает:=)

1
ответ дан 8 December 2019 в 04:32
поделиться

Я пытаюсь проигнорировать неоднозначность в Вашем исходном вопросе и считать его буквально. Вот дополнительный метод что перегрузки TrimEnd для взятия строки.

static class StringExtensions
{
    public static string TrimEnd(this string s, string remove)
    {
        if (s.EndsWith(remove))
        {
            return s.Substring(0, s.Length - remove.Length);
        }
        return s;
    }
}

Вот некоторые тесты, чтобы показать, что это работает:

        Debug.Assert("abc".TrimEnd("<br>") == "abc");
        Debug.Assert("abc<br>".TrimEnd("<br>") == "abc");
        Debug.Assert("<br>abc".TrimEnd("<br>") == "<br>abc");

Я хочу указать, что это решение легче считать, чем regex, вероятно, быстрее, чем regex (необходимо использовать профилировщика, не предположение, если Вы обеспокоены производительностью), и полезный для удаления других вещей от концов строк.

regex становится более соответствующим, если Ваша проблема является более общей, чем Вы заявили (например, если Вы хотите удалить <BR> и </BR> и соглашение с конечными пробелами или что бы то ни было.

3
ответ дан 8 December 2019 в 04:32
поделиться

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

2
ответ дан 8 December 2019 в 04:32
поделиться

можно использовать RegEx или проверить, является ли запаздывающая строка повреждением, и удалите его

0
ответ дан 8 December 2019 в 04:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: