Czy istnieje łatwy sposób na usunięcie wszystkich tagów HTML lub WSZYSTKIEGO związanego z HTML z ciągu znaków?
Na przykład:
string title = "<b> Hulk Hogan's Celebrity Championship Wrestling <font color=\"#228b22\">[Proj # 206010]</font></b> (Reality Series, )"
Tak naprawdę powinno to być:
„Hulk Hogan's Celebrity Championship Wrestling [Proj # 206010] (seria Reality)”
xidel -s input -e '/'
.Odpowiedzi:
Możesz użyć prostego wyrażenia regularnego, takiego jak ten:
Pamiętaj, że to rozwiązanie ma swoją wadę. Aby uzyskać więcej informacji (zwłaszcza komentarze @mehaase), zobacz Usuwanie tagów HTML w ciągu znaków
Innym rozwiązaniem byłoby użycie pakietu HTML Agility Pack .
Przykład użycia biblioteki można znaleźć tutaj: Pakiet zwinności HTML - usuwanie niechcianych tagów bez usuwania treści?
źródło
< 10 <b>
i</b>
oba są usuwane.Możesz przeanalizować ciąg przy użyciu pakietu Html Agility i pobrać InnerText.
źródło
InnerText
rozwiązanie, ponieważ usuwa wszystkie tagi. Ale ... zostawia za sobą
i komentuje tagi, takie<!-- xxx -->
jak te otaczającev:shapetype
,v:shape
lubv:imagedata
z[if gte vml 1]
lub[if !vml]
jest to encja html, a nie tag, więc rozwiązanie do usunięcia tego może byćresult = WebUtility.HtmlDecode(result);
i usunięcia węzłów komentarzy, używając Html Agility Pack:htmlDoc.DocumentNode.SelectNodes("//comment()")?.ForEach(c=> c.Remove());
tuż przed zrobieniemresult = htmlDoc.DocumentNode.InnerText;
Możesz użyć poniższego kodu na swoim ciągu, a otrzymasz kompletny ciąg bez części html.
źródło