Feedback

C# - HTML Code entfernen und den Klartext lesen

Veröffentlicht von am 03.02.2015
(0 Bewertungen)
Hey,

also hier ein kleines Snippet.
Ist ungetestet, aber ich hoffe es müsste so funktionieren.

Kurz zur Funktion:

Hier kommt ein string, der einen HTMLCode liefert.
Jetzt will man ein Title oder einen Text, der Beispiel zwischen einer Überschrift (<h3>) steht.
Man übergibt. schar1 = h und schar2 = 3.

Der string, der nun zurück gegeben wird. Enthält den die Überschrift.

Ich hoffe es kann jemand von euch von nutzen sein.
        private string HTMLTag(string HTMLCode, string schar, string schar2)
        {
            int iweiter = 0;
            int iw = 0;
            string sTextwithoutHTML = "";
            const string sbegin = "<";
            const string send = ">";
            List<string> lTextwithoutHTML = new List<string>();
            for (int i = iweiter; i < HTMLCode.Length; i++)
            {
                if (HTMLCode.Substring(i, 1) == sbegin)
                {
                    if (HTMLCode.Substring(++i, 1) == schar)
                    {
                        if (HTMLCode.Substring((2 + i), 1) == schar2)
                        {
                            while (HTMLCode.Substring(iw, 1) != send)
                            {
                                iw = ++i;
                            }
                            while (HTMLCode.Substring(iw, 1) != "<")
                            {
                                lTextwithoutHTML.Add(HTMLCode.Substring(iw, 1));
                                iw++;
                            }
                            iweiter = iw + 3;
                            break;
                        }
                    }
                }
            }
            foreach (var item in lTextwithoutHTML.ToArray())
            {
                sTextwithoutHTML += item;
            }
            return sTextwithoutHTML;
        }

2 Kommentare zum Snippet

Enrico Wüstenberg schrieb am 04.02.2015:
Ist es nicht einfacher die Klasse RegEx zu nutzen?
string schar1 = "";
string schar2 = "";
Match match = Regex.Match(input, schar1 + "([A-Za-z0-9\-]+)"+ schar2,
RegexOptions.IgnoreCase);
Koopakiller schrieb am 04.02.2015:
Einfacher ist Regex mit Sicherheit - wenn man den Code häufig aufrufen muss jedoch wenig effizient. Wobei auch der ständige Aufruf von Substring nicht gerade schnell sein dürfte.
Eine Lösung mit IndexOf könnte nochmal mehr Geschwindigkeit drauf legen.

Das ist aber wie gesagt nur dann wirklich entscheidend, wenn man die Methode sehr oft aufrufen muss.
 

Logge dich ein, um hier zu kommentieren!