Frage

Ich versuche, einen Weg, um herauszufinden, die Anzahl der Zeichen in einer Zeichenfolge zu zählen, kürzen Sie die Zeichenfolge, gibt es dann. Ich brauche aber diese Funktion nicht zählen HTML-Tags. Das Problem ist, dass, wenn es HTML-Tags zählt, dann, wenn der Abschneidepunkt in der Mitte eines Tages ist, dann wird die Seite gebrochen erscheinen.

Das ist, was ich habe, so weit ...

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

Aber ich bin nicht glücklich mit diesem. Gibt es einen besseren Weg, dies zu tun? Wenn Sie eine neue Lösung für dieses Problem bieten könnte, oder vielleicht Vorschläge, was zu ergänzen, was ich bisher habe, das wäre toll.

Disclaimer:. Ich habe noch nie mit C # gearbeitet, so dass ich mit den Begriffen nicht vertraut bin relativ zur Sprache ... Ich tue dies, weil ich zu haben, nicht durch Wahl

Danke, Hristo

War es hilfreich?

Lösung

Verwenden Sie das richtige Werkzeug für das Problem.

HTML ist kein einfaches Format zu analysieren. Ich würde Sie raten, dass Sie einen bewiesen, bestehenden Parser verwenden, anstatt Ihre eigenen Rollen. Wenn Sie wissen, dass Sie immer nur Parsen XHTML -. Dann könnte man einen XML-Parser verwenden, anstatt

Dies sind die einzigen zuverlässigen Möglichkeiten, Operationen auf HTML auszuführen, der die semantische Repräsentation wird erhalten.

Versuchen Sie nicht, reguläre Ausdrücke verwenden . HTML ist keine reguläre Sprache und man kann nur Ursache selbst Kummer und Elend in diese Richtung gehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top