웹 개발이나 데이터 처리 중, HTML 파일이나 텍스트에서 특정 태그를 제거하고 그 안에 포함된 내용만을 추출해야 할 때가 종종 있죠.
이를 수동으로 처리하려면 시간이 많이 걸리기에, 오늘은 특정 태그를 찾아 제거하고, 그 안의 텍스트만 남겨 클립보드에 복사하는 C# 코드를 설명해드릴게요.
이번 코드에서는 기본적으로 파일에서 특정 태그를 제거한 후, 해당 태그 안에 포함된 텍스트를 추출하는 작업을 해요. 예를 들어, HTML 파일에서 <p> 태그나 <div> 태그를 제거하고 그 안에 있는 텍스트만 남길 수 있답니다.
정규 표현식을 사용해 HTML 태그를 손쉽게 제거할 수 있어요. 이는 파일에서 불필요한 태그를 제거하고 순수한 텍스트만 추출할 때 유용해요~
물론 라이브러리를 활용하여 더 쉽게 하는 방법도 있습니다~
예시 코드
private void RemoveTag(string _tag)
{
string result = string.Empty;
string line = string.Empty;
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\test.txt";
StringBuilder s = new StringBuilder();
using (StreamReader sr = new StreamReader(path))
{
while ((line = sr.ReadLine()) != null)
{
line = Regex.Replace(line, $@"(?:<{_tag}[^>]*?>)(.*?)(?:</{_tag}>)", match =>
{
return match.Groups[1].Value;
});
s.AppendLine(line);
}
}
result = s.ToString();
if (result.EndsWith(Environment.NewLine))
result = result.TrimEnd(Environment.NewLine.ToCharArray());
Clipboard.SetDataObject(result);
}
코드 설명
이 코드는 RemoveTag라는 메서드로 구성되어 있고, 다음과 같은 순서로 동작해요.
- 파일 경로 설정: 우선 파일 경로를 데스크탑에 있는
test.txt로 지정해요.Environment.GetFolderPath()를 사용해서 운영 체제의 데스크탑 경로를 가져오는 방식인데 필요에 따라 바꾸세요. - 파일 읽기:
StreamReader를 사용해 파일을 한 줄씩 읽어옵니다. - 정규식으로 태그 제거:
Regex.Replace()를 이용해 특정 HTML 태그를 찾아 제거하고, 그 안의 텍스트만 남기는 작업을 해요. 태그를 찾는 패턴은/<태그명>내용</태그명>/형식으로 지정되어 있어요. 여기서_tag는 함수 호출 시 전달받은 값으로, 사용자가 원하는 태그를 동적으로 설정할 수 있어요. - 결과 저장:
StringBuilder를 사용해서 한 줄씩 가공된 결과를 저장해요. - 클립보드 복사: 최종적으로 가공된 텍스트는
Clipboard.SetDataObject(object)메서드를 사용해 클립보드에 복사됩니다. 즉, 텍스트를 가공한 후 바로 붙여넣기 작업을 할 수 있게 돼요.
