[C#] 태그 제거하기, a 태그 지우기 예제 자료 안내

HTML을 자료에서 태그를 제거하려고 합니다. 특히 a 태그 부분만 지우고 싶어요. 다음은 해당 예제 자료입니다.

C# 태그 제거하기

해당 예제에는 여러 가지 태그가 있습니다. 오늘 없애보려는 핵심 태그인 a태그부터, span, label, div, p 등의 태그가 있는 것을 확인할 수 있습니다.

<!DOCTYPE html>
<html>
<body>
  <span>
    <label for="google-link">구글로 이동</label>
    <a id="google-link" href="https://www.google.com/">클릭하세요</a>
  </span>
  <a href="https://www.daum.net/">다음</a>
  <a href="https://www.naver.com/" style="display: inline-block; padding: 10px; background-color: #1F618D; color: white; text-decoration: none;">네이버로 이동</a>
  <div>DIV~</div>
  <p>P!</p>
</body>
</html>
c# 태그 제거하기

이때, 위와 같은 메서드를 이용하여 a태그를 제거해 볼 수 있습니다. 핵심은 C#뿐만 아니라 거의 모든 개발언어에서 제공하는 정규표현식입니다.

  • 입맛에 따라 가공하세요. 예제에 대한 간단한 안내를 시작하겠습니다.
  • path 변수는 바탕화면의 a.txt 파일 경로입니다.
  • 스트링빌더 s는 텍스트의 각 라인을 읽으며 변환한 값을 담을 변수입니다.
  • 스트림리더로 해당 파일을 읽습니다.
  • 라인 변수는 스트림리더의 각 리딩한 라인이며, 값이 null일 때까지 반복합니다.
  • 라인 변수에서 "(?:<a.*?>)(.*?)(?:<\\/a>)" 표현식에 일치하는 경우 1번 그룹으로 반환하도록 합니다. 1번 그룹은 a태그 사이의 값입니다. 저는 a태그를 모두 정리하기 위해서 사용합니다.
  • 가공한 라인 변수를 스트링빌더 요소에 추가합니다.
  • 스트링빌더에 추가한 값의 맨 뒷자리 뉴라인을 정리합니다. 공란이나 null을 입력하는 경우는 고려하지 않았는데, 필요시 if조건이나 try구문으로 점검해 주세요.
  • 결과 result 변수를 클립보드에 저장하겠습니다.
void BeomSang()
{
    string result = string.Empty;
    string line = string.Empty;
    string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\a.txt";
    StringBuilder s = new StringBuilder();
    using (StreamReader sr = new StreamReader(path))
    {
        while ((line = sr.ReadLine()) != null)
        {
            line = Regex.Replace(line, "(?:<a.*?>)(.*?)(?:<\\/a>)", delegate (Match match)
            {
                return match.Groups[1].Value;
            });
            s.AppendLine(line);
        }
    }
    result = s.ToString().TrimEnd(System.Environment.NewLine.ToCharArray());
    System.Windows.Clipboard.SetText(result);
}

해당 예제 자료를 통해 HTML 태그를 다음과 같이 변경해 볼 수 있습니다.

a 태그 지우기
<!DOCTYPE html>
<html>
<body>
  <span>
    <label for="google-link">구글로 이동</label>
    클릭하세요
  </span>
  다음
  네이버로 이동
  <div>DIV~</div>
  <p>P!</p>
</body>
</html>
댓글 쓰기
가져가실 때, 출처 표시 부탁드려요! 감사합니다. 💗