Domanda

Sto cercando di capire un modo per contare il numero di caratteri in una stringa, troncare la stringa, poi lo restituisce.Tuttavia, ho bisogno di questa funzione per NON contare i tag HTML.Il problema è che se si conta tag HTML, quindi se il truncate punto è nel mezzo di un tag, quindi verrà visualizzata la pagina rotto.

Questo è ciò che ho finora...

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

Ma io non sono felice con questo.C'è un modo migliore per fare questo?Se si potrebbe fornire una nuova soluzione per questo, o forse suggerimenti su cosa aggiungere a ciò che ho finora, che sarebbe grande.

Disclaimer:Non ho mai lavorato con C#, così non ho familiarità con i concetti legati alla lingua...Sto facendo questo perché ho bisogno, non per scelta.

Grazie, Hristo

È stato utile?

Soluzione

Utilizzare lo strumento giusto per il problema.

HTML non è un formato semplice da analizzare.Vorrei consigliare che si utilizza un provata, esistenti parser piuttosto che rotolare il vostro proprio.Se sai che sarà sempre e solo di analizzare XHTML - allora si potrebbe utilizzare un parser XML, invece.

Questi sono gli unici modi affidabili per eseguire operazioni su HTML che permetta di preservare la rappresentazione semantica.

Non tentare di utilizzare le espressioni regolari.HTML non è un normale lingua e si può solo causare te stesso il dolore e la miseria andando in quella direzione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top