[C#] 어떤 태그가 포함되어 있는지 모르고 문자열에서 모든 HTML 태그를 제거하려면 어떻게해야합니까?

모든 HTML 태그 또는 문자열에서 관련된 모든 HTML을 제거하는 쉬운 방법이 있습니까?

예를 들면 :

string title = "<b> Hulk Hogan's Celebrity Championship Wrestling &nbsp;&nbsp;&nbsp;<font color=\"#228b22\">[Proj # 206010]</font></b>&nbsp;&nbsp;&nbsp; (Reality Series, &nbsp;)"

위의 내용은 실제로 다음과 같아야합니다.

“헐크 호건의 연예인 선수권 레슬링 [Proj # 206010] (리얼리티 시리즈)”



답변

다음과 같은 간단한 정규식을 사용할 수 있습니다.

public static string StripHTML(string input)
{
   return Regex.Replace(input, "<.*?>", String.Empty);
}

이 솔루션에는 자체 결함이 있습니다. 자세한 내용 은 문자열에서 HTML 태그 제거를 참조 하십시오 (특히 @mehaase의 주석).

또 다른 해결책은 HTML Agility Pack 을 사용하는 것 입니다.
여기에서 라이브러리를 사용하는 예를 찾을 수 있습니다. HTML 민첩성 팩-콘텐츠를 제거하지 않고 원치 않는 태그를 제거 하시겠습니까?


답변

Html Agility Pack을 사용하여 문자열을 구문 분석 하고 InnerText를 가져올 수 있습니다.

    HtmlDocument htmlDoc = new HtmlDocument();
    htmlDoc.LoadHtml(@"<b> Hulk Hogan's Celebrity Championship Wrestling &nbsp;&nbsp;&nbsp;<font color=\"#228b22\">[Proj # 206010]</font></b>&nbsp;&nbsp;&nbsp; (Reality Series, &nbsp;)");
    string result = htmlDoc.DocumentNode.InnerText;


답변

아래 코드를 문자열에 사용할 수 있으며 html 부분없이 완전한 문자열을 얻을 수 있습니다.

string title = "<b> Hulk Hogan's Celebrity Championship Wrestling &nbsp;&nbsp;&nbsp;<font color=\"#228b22\">[Proj # 206010]</font></b>&nbsp;&nbsp;&nbsp; (Reality Series, &nbsp;)".Replace("&nbsp;",string.Empty);
        string s = Regex.Replace(title, "<.*?>", String.Empty);


답변