contagem de caracteres menos caracteres HTML C #

Estou tentando descobrir uma maneira de contar o número de caracteres em uma string, truncar a string e depois retorná-la. No entanto, preciso dessa função para NÃO contar tags HTML. O problema é que, se ele conta com tags HTML, se o ponto truncado estiver no meio de uma tag, a página aparecerá quebrada.

Isto é o que eu tenho até agora ...

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;
}

Mas não estou feliz com isso. Existe uma maneira melhor de fazer isso? Se você pudesse fornecer uma nova solução para isso, ou talvez sugestões sobre o que adicionar ao que tenho até agora, isso seria ótimo.

Isenção de responsabilidade: nunca trabalhei com C #, por isso não estou familiarizado com os conceitos relacionados ao idioma ... Estou fazendo isso porque preciso, não por opção.

Obrigado, Hristo

questionAnswers(1)

yourAnswerToTheQuestion