C#으로 문장에서 중복 단어 제거하기
문장을 처리할 때 같은 단어가 여러 번 반복되어 나타나는 경우가 있습니다. 이번 글에서는 C#의 LINQ(Language Integrated Query)를 활용하여 주어진 문장에서 모든 중복 단어를 손쉽게 제거하는 방법을 알아보겠습니다.
중복 단어가 포함된 문자열 설정
먼저 중복 단어가 포함된 문자열을 하나 설정해 보겠습니다.
string str = "One Two Three One";
위 문자열을 보면 "One"이라는 단어가 두 번 반복되어 있는 것을 확인할 수 있습니다. 이제 이 중복 단어를 제거해 보겠습니다.
중복 단어 제거 예제 코드
아래 예제 코드를 실행하면 문장에서 중복된 단어를 제거할 수 있습니다.
using System;
using System.Linq;
public class Program {
public static void Main() {
string str = "One Two Three One";
string[] arr = str.Split(' ');
Console.WriteLine(str);
var a =
from k in arr
orderby k
select k;
Console.WriteLine("After removing duplicate words...");
foreach(string res in a.Distinct()) {
Console.Write(" " + res.ToLower());
}
Console.ReadLine();
}
}실행 결과
One Two Three One After removing duplicate words... one three two
코드 동작 원리 살펴보기
위 코드가 어떻게 동작하는지 단계별로 살펴보겠습니다.
1. Split()으로 문자열 분리str.Split(' ') 메서드는 공백 문자를 기준으로 문장을 잘라내어 단어 배열을 생성합니다. 즉, "One Two Three One"은 ["One", "Two", "Three", "One"] 배열로 변환됩니다.
2. LINQ 쿼리로 정렬orderby k 구문을 사용하여 단어들을 알파벳 순서로 정렬합니다. 정렬은 필수 과정은 아니지만, 결과를 보기 좋게 만들어 줍니다.
3. Distinct()로 중복 제거Distinct() 메서드는 컬렉션에서 고유한 요소만 남기고 중복된 요소를 모두 제거합니다. 이 덕분에 두 번째 "One"이 결과에서 사라지게 됩니다.
4. ToLower()로 소문자 통일ToLower() 메서드를 사용해 모든 단어를 소문자로 변환하여 출력 형식을 일관되게 유지합니다.
마무리
이처럼 C#에서는 LINQ의 Distinct() 메서드를 활용하면 단 몇 줄의 코드로도 문장 내 중복 단어를 효율적으로 제거할 수 있습니다. 대량의 텍스트 데이터를 처리하거나 검색 기능을 개발할 때 매우 유용하게 활용할 수 있으니, 다양한 응용 사례에 적용해 보시기 바랍니다.