문화권을 구분하지 않는 문자열 비교 수행Performing Culture-Insensitive String Comparisons

기본적으로 String.Compare 메서드는 문화권 구분 및 대/소문자 구분 비교 작업을 수행합니다.By default, the String.Compare method performs culture-sensitive and case-sensitive comparisons. 이 메서드에는 사용할 문화권을 지정할 수 있는 culture 매개 변수와 사용할 비교 규칙을 지정할 수 있는 comparisonType 매개 변수를 제공하는 몇 가지 오버로드도 포함되어 있습니다.This method also includes several overloads that provide a culture parameter that lets you specify the culture to use, and a comparisonType parameter that lets you specify the comparison rules to use. 기본 오버로드 대신 이러한 메서드를 호출하면 특정 메서드 호출에서 사용되는 규칙에 대한 모든 모호성이 제거되고 특정 비교가 문화권을 구분하는지 여부가 명확히 나타납니다.Calling these methods instead of the default overload removes any ambiguity about the rules used in a particular method call, and makes it clear whether a particular comparison is culture-sensitive or culture-insensitive.

참고

String.CompareTo 메서드의 두 오버로드는 문화권 구분 비교와 대/소문자 구분 비교를 수행합니다. 이 메서드를 사용하여 문화권을 구분하지 않는 비교를 수행할 수 없습니다.Both overloads of the String.CompareTo method perform culture-sensitive and case-sensitive comparisons; you cannot use this method to perform culture-insensitive comparisons. 코드의 명확성을 위해 String.Compare 메서드를 대신 사용하는 것이 좋습니다.For code clarity, we recommend that you use the String.Compare method instead.

문화권 구분 작업의 경우 StringComparison.CurrentCulture 또는 StringComparison.CurrentCultureIgnoreCase 열거형 값을 comparisonType 매개 변수로 지정합니다.For culture-sensitive operations, specify the StringComparison.CurrentCulture or StringComparison.CurrentCultureIgnoreCase enumeration value as the comparisonType parameter. 현재 문화권이 아닌 지정된 문화권을 사용하여 문화권 구분 비교를 수행하려면 해당 문화권을 나타내는 CultureInfo 개체를 culture 매개 변수로 지정합니다.If you want to perform a culture-sensitive comparison using a designated culture other than the current culture, specify the CultureInfo object that represents that culture as the culture parameter.

String.Compare 메서드에서 지원하는 문화권을 구분하지 않는 문자열 비교는 언어적(고정 문화권의 정렬 규칙 기반)이거나 비언어적(문자열에 있는 문자의 서수 값 기반)입니다.The culture-insensitive string comparisons supported by the String.Compare method are either linguistic (based on the sorting conventions of the invariant culture) or non-linguistic (based on the ordinal value of the characters in the string). 대부분의 문화권을 구분하지 않는 문자열 비교는 비언어적입니다.Most culture-insensitive string comparisons are non-linguistic. 이러한 비교의 경우 StringComparison.Ordinal 또는 StringComparison.OrdinalIgnoreCase 열거형 값을 comparisonType 매개 변수로 지정합니다.For these comparisons, specify the StringComparison.Ordinal or StringComparison.OrdinalIgnoreCase enumeration value as the comparisonType parameter. 예를 들어 사용자 이름 또는 암호 비교와 같은 보안 결정이 문자열 비교의 결과를 기반으로 하는 경우 결과가 특정 문화권 또는 언어 규칙의 영향을 받지 않도록 작업이 문화권을 구분하지 않고 비언어적이어야 합니다.For example, if a security decision (such as a user name or password comparison) is based on the result of a string comparison, the operation should be culture-insensitive and non-linguistic to ensure that the result is not affected by the conventions of a particular culture or language.

여러 문화권의 언어적으로 관련된 문자열을 일관성 있게 처리하려면 문화권을 구분하지 않는 언어적 문자열 비교를 사용합니다.Use culture-insensitive linguistic string comparison if you want to handle linguistically relevant strings from multiple cultures in a consistent way. 예를 들어 애플리케이션에서 목록 상자에 여러 문자 집합을 사용하는 단어를 표시하는 경우 현재 문화권에 관계없이 동일한 순서로 단어를 표시하려고 할 수 있습니다.For example, if your application displays words that use multiple character sets in a list box, you might want to display words in the same order regardless of the current culture. 문화권을 구분하지 않는 언어적 비교의 경우 .NET Framework에서는 영어의 언어적 규칙을 기반으로 하는 고정 문화권을 정의합니다.For culture-insensitive linguistic comparisons, the .NET Framework defines an invariant culture that is based on the linguistic conventions of English. 문화권을 구분하지 않는 언어적 비교를 수행하려면 StringComparison.InvariantCulture 또는 StringComparison.InvariantCultureIgnoreCasecomparisonType 매개 변수로 지정합니다.To perform a culture-insensitive linguistic comparison, specify StringComparison.InvariantCulture or StringComparison.InvariantCultureIgnoreCase as the comparisonType parameter.

다음 예제에서는 문화권을 구분하지 않는 비언어적 문자열 비교를 두 가지 수행합니다.The following example performs two culture-insensitive, non-linguistic string comparisons. 첫 번째 비교는 대/소문자를 구분하지만 두 번째 비교는 대/소문자를 구분하지 않습니다.The first is case-sensitive, but the second is not.

using System;

public class CompareSample
{
    public static void Main()
    {
        string string1 = "file";
        string string2 = "FILE";
        int compareResult = 0;
        
        compareResult = String.Compare(string1, string2, 
                                       StringComparison.Ordinal);
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}", 
                          StringComparison.Ordinal, string1, string2, 
                          compareResult); 

        compareResult = String.Compare(string1, string2, 
                                       StringComparison.OrdinalIgnoreCase);
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}", 
                          StringComparison.OrdinalIgnoreCase, string1, string2, 
                          compareResult); 
    }
}
// The example displays the following output:
//    Ordinal comparison of 'file' and 'FILE': 32
//    OrdinalIgnoreCase comparison of 'file' and 'FILE': 0
Public Class CompareSample
    Public Shared Sub Main()
        Dim string1 As String = "file"
        Dim string2 As String = "FILE"
        Dim compareResult As Integer
        
        compareResult = String.Compare(string1, string2, _
                                       StringComparison.Ordinal)   
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}", 
                          StringComparison.Ordinal, string1, string2, 
                          compareResult) 

        compareResult = String.Compare(string1, string2, 
                                       StringComparison.OrdinalIgnoreCase)
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}", 
                          StringComparison.OrdinalIgnoreCase, string1, string2, 
                          compareResult) 
    End Sub
End Class
' The example displays the following output:
'    Ordinal comparison of 'file' and 'FILE': 32
'    OrdinalIgnoreCase comparison of 'file' and 'FILE': 0

Windows 운영 체제에 대한 정렬 및 비교 작업에 사용되는 문자 가중치에 대한 정보를 포함하는 텍스트 파일의 집합, 가중치 테이블 정렬 및 Linux 및 macOS의 정렬 가중치 테이블 기본 유니코드 데이터 정렬 요소 테이블을 다운로드할 수 있습니다.You can download the Sorting Weight Tables, a set of text files that contain information on the character weights used in sorting and comparison operations for Windows operating systems, and the Default Unicode Collation Element Table, the sort weight table for Linux and macOS.

참고 항목See also