количество символов минус символы HTML C # - PullRequest
0 голосов
/ 08 октября 2010

Я пытаюсь найти способ подсчитать количество символов в строке, обрезать строку и вернуть ее.Однако мне нужна эта функция, чтобы НЕ считать 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 #, поэтому я не знаком с концепциями, связанными с языком ... Я делаю это потому, что должен, а не по выбору.

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

1 Ответ

3 голосов
/ 08 октября 2010

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

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

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

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

...