Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#으로 문장에서 중복 단어 제거하기: LINQ Distinct() 활용법

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() 메서드를 활용하면 단 몇 줄의 코드로도 문장 내 중복 단어를 효율적으로 제거할 수 있습니다. 대량의 텍스트 데이터를 처리하거나 검색 기능을 개발할 때 매우 유용하게 활용할 수 있으니, 다양한 응용 사례에 적용해 보시기 바랍니다.