Вопрос

Я пытаюсь выяснить способ сосчитать количество символов в строке, усекайте строку, затем возвращает его. Однако мне нужна эта функция, чтобы не считать теги HTML. Проблема в том, что если она подсчитывает HTML-теги, то если усеченная точка находится в середине тега, то страница появится сломанной.

Это то, что у меня так далеко ...

public string Truncate(string input, int characterLimit, string currID) {
    string output = input;

    // Check if the string is longer than the allowed amount
    // otherwise do nothing
    if (output.Length > characterLimit && characterLimit > 0) {

        // cut the string down to the maximum number of characters
        output = output.Substring(0, characterLimit);

        // Check if the character right after the truncate point was a space
        // if not, we are in the middle of a word and need to remove the rest of it
        if (input.Substring(output.Length, 1) != " ") {
            int LastSpace = output.LastIndexOf(" ");

            // if we found a space then, cut back to that space
            if (LastSpace != -1)
            {
                output = output.Substring(0, LastSpace);
            }
        }
        // end any anchors
        if (output.Contains("<a href")) {
            output += "</a>";
        }
        // Finally, add the "..." and end the paragraph
        output += "<br /><br />...<a href='Announcements.aspx?ID=" + currID + "'>see more</a></p>";
    }
    return output;
}

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

Отказ от ответственности: Я никогда не работал с C #, поэтому я не знаком с концепциями, связанными с языком ... Я делаю это, потому что я должен, не по выбору.

Спасибо, христо

Это было полезно?

Решение

Используйте правильный инструмент для проблемы.

HTML не является простым форматом для анализа. Я бы посоветовал, чтобы вы использовали Доказанный, существующий парсер а не катиться своим собственным. Если вы знаете, что вы когда-нибудь будете только анализировать XHTML - тогда вы можете использовать парсер XML.

Это единственные надежные способы выполнения операций на HTML, которые сохранят семантическое представление.

Не пытайтесь использовать регулярные выражения. Отказ HTML не является обычным языком, и вы можете заставить себя только горе и страдания, идущие в этом направлении.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top