Gibt es eine einfache Möglichkeit, alle HTML-Tags oder ALLES, was mit HTML zu tun hat, aus einer Zeichenfolge zu entfernen?
Beispielsweise:
string title = "<b> Hulk Hogan's Celebrity Championship Wrestling <font color=\"#228b22\">[Proj # 206010]</font></b> (Reality Series, )"
Das obige sollte wirklich sein:
"Hulk Hogans Promi-Wrestling [Proj # 206010] (Reality-Serie)"
xidel -s input -e '/'
.Antworten:
Sie können einen einfachen regulären Ausdruck wie diesen verwenden:
Beachten Sie, dass diese Lösung einen eigenen Fehler aufweist. Weitere Informationen finden Sie unter Entfernen von HTML-Tags in String (insbesondere die Kommentare von @mehaase).
Eine andere Lösung wäre die Verwendung des HTML Agility Pack .
Ein Beispiel für die Verwendung der Bibliothek finden Sie hier: HTML Agility Pack - Entfernen unerwünschter Tags ohne Entfernen von Inhalten?
quelle
< 10 <b>
und</b>
beide entfernt werden.Sie können die Zeichenfolge mit dem HTML Agility Pack analysieren und den InnerText abrufen.
quelle
InnerText
Lösung, da sie alle Tags entfernt. Aber ... es hinterlässt
und auch Kommentar - Tags wie<!-- xxx -->
wie die umliegendenv:shapetype
,v:shape
oderv:imagedata
mit[if gte vml 1]
oder[if !vml]
eine HTML-Entität ist, kein Tag, also eine Lösung zum Entfernenresult = WebUtility.HtmlDecode(result);
und Entfernen der Kommentarknoten mithilfe des HTML-Agility-Pakets:htmlDoc.DocumentNode.SelectNodes("//comment()")?.ForEach(c=> c.Remove());
kurz bevorresult = htmlDoc.DocumentNode.InnerText;
Sie können den folgenden Code für Ihre Zeichenfolge verwenden und erhalten die vollständige Zeichenfolge ohne HTML-Teil.
quelle