Pregunta

Estoy tratando de encontrar una manera de contar el número de caracteres de una cadena, truncar la cadena y luego se lo devuelve. Sin embargo, necesito que esta función no la cantidad de etiquetas HTML. El problema es que si se cuenta con las etiquetas HTML, a continuación, si el punto de truncamiento se encuentra en medio de una etiqueta, la página aparecerá roto.

Esto es lo que tengo hasta ahora ...

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

Pero no estoy feliz con esto. ¿Hay una mejor manera de hacer esto? Si usted podría proporcionar una nueva solución para esto, o quizás sugerencias sobre lo que añadir a lo que tengo hasta ahora, que sería grande.

exención de responsabilidad:. Nunca había trabajado con C #, así que no estoy familiarizado con los conceptos relacionados con la lengua ... estoy haciendo esto porque tengo que hacerlo, no por elección

Gracias, Hristo

¿Fue útil?

Solución

Usar la herramienta adecuada para el problema.

HTML no es un formato sencillo de analizar. Yo aconsejaría que use un demostrado, existente analizador en lugar de rodar su propia. Si sabe que va a XHTML solamente siempre de análisis -. Entonces se podría utilizar un analizador XML en lugar

Estas son las únicas maneras fiables para realizar operaciones en HTML que preservarán la representación semántica.

No trate de utilizar expresiones regulares . HTML no es un lenguaje regular y se puede única causa a sí mismo el dolor y la miseria va en esa dirección.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top