StringComparison 열거형

정의

Compare(String, String)Equals(Object) 메서드의 특정 오버로드에서 사용할 문화권, 대/소문자 및 정렬 규칙을 지정합니다.Specifies the culture, case, and sort rules to be used by certain overloads of the Compare(String, String) and Equals(Object) methods.

public enum class StringComparison
public enum StringComparison
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public enum StringComparison
type StringComparison = 
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type StringComparison = 
Public Enum StringComparison
상속
StringComparison
특성

필드

CurrentCulture 0

문화권 구분 정렬 규칙 및 현재 문화권을 사용하여 문자열을 비교합니다.Compare strings using culture-sensitive sort rules and the current culture.

CurrentCultureIgnoreCase 1

문화권 구분 정렬 규칙 및 현재 문화권을 사용하고 비교되는 문자열의 대/소문자를 무시하여 문자열을 비교합니다.Compare strings using culture-sensitive sort rules, the current culture, and ignoring the case of the strings being compared.

InvariantCulture 2

문화권 구분 정렬 규칙 및 고정 문화권을 사용하여 문자열을 비교합니다.Compare strings using culture-sensitive sort rules and the invariant culture.

InvariantCultureIgnoreCase 3

문화권 구분 정렬 규칙 및 고정 문화권을 사용하고 비교되는 문자열의 대/소문자를 무시하여 문자열을 비교합니다.Compare strings using culture-sensitive sort rules, the invariant culture, and ignoring the case of the strings being compared.

Ordinal 4

서수(이진) 정렬 규칙을 사용하여 문자열을 비교합니다.Compare strings using ordinal (binary) sort rules.

OrdinalIgnoreCase 5

서수(이진) 정렬 규칙을 사용하고 비교되는 문자열의 대/소문자를 무시하여 문자열을 비교합니다.Compare strings using ordinal (binary) sort rules and ignoring the case of the strings being compared.

예제

다음 예제에서는 열거형의 각 멤버를 사용 하 여 4 개의 단어 집합을 비교 합니다 StringComparison .The following example compares four sets of words by using each member of the StringComparison enumeration. 비교에서는 영어 (미국) 및 Sami, 북부 (스웨덴) 문화권의 규칙을 사용 합니다.The comparisons use the conventions of the English (United States) and Sami, Northern (Sweden) cultures. 문자열 "encyclopædia" 및 "백과"는 en-us 문화권에서 동일 하 게 간주 되지만 남부, 북부 (스웨덴) 문화권에서는 동일 하지 않습니다.Note that the strings "encyclopædia" and "encyclopedia" are considered equivalent in the en-US culture but not in the Sami, Northern (Sweden) culture.

using System;
using System.Globalization;
using System.Threading;

public class Example
{
   public static void Main()
   {
      String[] cultureNames = { "en-US", "se-SE" };
      String[] strings1 = { "case",  "encyclopædia",  
                            "encyclopædia", "Archæology" };
      String[] strings2 = { "Case", "encyclopaedia", 
                            "encyclopedia" , "ARCHÆOLOGY" };
      StringComparison[] comparisons = (StringComparison[]) Enum.GetValues(typeof(StringComparison));
      
      foreach (var cultureName in cultureNames) {
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureName);
         Console.WriteLine("Current Culture: {0}", CultureInfo.CurrentCulture.Name);
         for (int ctr = 0; ctr <= strings1.GetUpperBound(0); ctr++) {
            foreach (var comparison in comparisons) 
               Console.WriteLine("   {0} = {1} ({2}): {3}", strings1[ctr],
                                 strings2[ctr], comparison, 
                                 String.Equals(strings1[ctr], strings2[ctr], comparison));

            Console.WriteLine();         
         }
         Console.WriteLine();
      }
   }
}
// The example displays the following output:
//    Current Culture: en-US
//       case = Case (CurrentCulture): False
//       case = Case (CurrentCultureIgnoreCase): True
//       case = Case (InvariantCulture): False
//       case = Case (InvariantCultureIgnoreCase): True
//       case = Case (Ordinal): False
//       case = Case (OrdinalIgnoreCase): True
//    
//       encyclopædia = encyclopaedia (CurrentCulture): True
//       encyclopædia = encyclopaedia (CurrentCultureIgnoreCase): True
//       encyclopædia = encyclopaedia (InvariantCulture): True
//       encyclopædia = encyclopaedia (InvariantCultureIgnoreCase): True
//       encyclopædia = encyclopaedia (Ordinal): False
//       encyclopædia = encyclopaedia (OrdinalIgnoreCase): False
//    
//       encyclopædia = encyclopedia (CurrentCulture): False
//       encyclopædia = encyclopedia (CurrentCultureIgnoreCase): False
//       encyclopædia = encyclopedia (InvariantCulture): False
//       encyclopædia = encyclopedia (InvariantCultureIgnoreCase): False
//       encyclopædia = encyclopedia (Ordinal): False
//       encyclopædia = encyclopedia (OrdinalIgnoreCase): False
//    
//       Archæology = ARCHÆOLOGY (CurrentCulture): False
//       Archæology = ARCHÆOLOGY (CurrentCultureIgnoreCase): True
//       Archæology = ARCHÆOLOGY (InvariantCulture): False
//       Archæology = ARCHÆOLOGY (InvariantCultureIgnoreCase): True
//       Archæology = ARCHÆOLOGY (Ordinal): False
//       Archæology = ARCHÆOLOGY (OrdinalIgnoreCase): True
//    
//    
//    Current Culture: se-SE
//       case = Case (CurrentCulture): False
//       case = Case (CurrentCultureIgnoreCase): True
//       case = Case (InvariantCulture): False
//       case = Case (InvariantCultureIgnoreCase): True
//       case = Case (Ordinal): False
//       case = Case (OrdinalIgnoreCase): True
//    
//       encyclopædia = encyclopaedia (CurrentCulture): False
//       encyclopædia = encyclopaedia (CurrentCultureIgnoreCase): False
//       encyclopædia = encyclopaedia (InvariantCulture): True
//       encyclopædia = encyclopaedia (InvariantCultureIgnoreCase): True
//       encyclopædia = encyclopaedia (Ordinal): False
//       encyclopædia = encyclopaedia (OrdinalIgnoreCase): False
//    
//       encyclopædia = encyclopedia (CurrentCulture): False
//       encyclopædia = encyclopedia (CurrentCultureIgnoreCase): False
//       encyclopædia = encyclopedia (InvariantCulture): False
//       encyclopædia = encyclopedia (InvariantCultureIgnoreCase): False
//       encyclopædia = encyclopedia (Ordinal): False
//       encyclopædia = encyclopedia (OrdinalIgnoreCase): False
//    
//       Archæology = ARCHÆOLOGY (CurrentCulture): False
//       Archæology = ARCHÆOLOGY (CurrentCultureIgnoreCase): True
//       Archæology = ARCHÆOLOGY (InvariantCulture): False
//       Archæology = ARCHÆOLOGY (InvariantCultureIgnoreCase): True
//       Archæology = ARCHÆOLOGY (Ordinal): False
//       Archæology = ARCHÆOLOGY (OrdinalIgnoreCase): True
Imports System.Globalization
Imports System.Threading

Module Example
   Public Sub Main()
      Dim cultureNames() As String = { "en-US", "se-SE" }
      Dim strings1() As String = { "case",  "encyclopædia",  
                                   "encyclopædia", "Archæology" }
      Dim strings2() As String = { "Case", "encyclopaedia", 
                                   "encyclopedia" , "ARCHÆOLOGY" }
      Dim comparisons() As StringComparison = CType([Enum].GetValues(GetType(StringComparison)),
                                           StringComparison())
      
      For Each cultureName In cultureNames
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureName)
         Console.WriteLine("Current Culture: {0}", CultureInfo.CurrentCulture.Name)
         For ctr As Integer = 0 To strings1.GetUpperBound(0)
            For Each comparison In comparisons
               Console.WriteLine("   {0} = {1} ({2}): {3}", strings1(ctr),
                                 strings2(ctr), comparison, 
                                 String.Equals(strings1(ctr), strings2(ctr), comparison))
            Next
            Console.WriteLine()         
         Next
         Console.WriteLine()
      Next
   End Sub
End Module
' The example displays the following output:
'    Current Culture: en-US
'       case = Case (CurrentCulture): False
'       case = Case (CurrentCultureIgnoreCase): True
'       case = Case (InvariantCulture): False
'       case = Case (InvariantCultureIgnoreCase): True
'       case = Case (Ordinal): False
'       case = Case (OrdinalIgnoreCase): True
'    
'       encyclopædia = encyclopaedia (CurrentCulture): True
'       encyclopædia = encyclopaedia (CurrentCultureIgnoreCase): True
'       encyclopædia = encyclopaedia (InvariantCulture): True
'       encyclopædia = encyclopaedia (InvariantCultureIgnoreCase): True
'       encyclopædia = encyclopaedia (Ordinal): False
'       encyclopædia = encyclopaedia (OrdinalIgnoreCase): False
'    
'       encyclopædia = encyclopedia (CurrentCulture): False
'       encyclopædia = encyclopedia (CurrentCultureIgnoreCase): False
'       encyclopædia = encyclopedia (InvariantCulture): False
'       encyclopædia = encyclopedia (InvariantCultureIgnoreCase): False
'       encyclopædia = encyclopedia (Ordinal): False
'       encyclopædia = encyclopedia (OrdinalIgnoreCase): False
'    
'       Archæology = ARCHÆOLOGY (CurrentCulture): False
'       Archæology = ARCHÆOLOGY (CurrentCultureIgnoreCase): True
'       Archæology = ARCHÆOLOGY (InvariantCulture): False
'       Archæology = ARCHÆOLOGY (InvariantCultureIgnoreCase): True
'       Archæology = ARCHÆOLOGY (Ordinal): False
'       Archæology = ARCHÆOLOGY (OrdinalIgnoreCase): True
'    
'    
'    Current Culture: se-SE
'       case = Case (CurrentCulture): False
'       case = Case (CurrentCultureIgnoreCase): True
'       case = Case (InvariantCulture): False
'       case = Case (InvariantCultureIgnoreCase): True
'       case = Case (Ordinal): False
'       case = Case (OrdinalIgnoreCase): True
'    
'       encyclopædia = encyclopaedia (CurrentCulture): False
'       encyclopædia = encyclopaedia (CurrentCultureIgnoreCase): False
'       encyclopædia = encyclopaedia (InvariantCulture): True
'       encyclopædia = encyclopaedia (InvariantCultureIgnoreCase): True
'       encyclopædia = encyclopaedia (Ordinal): False
'       encyclopædia = encyclopaedia (OrdinalIgnoreCase): False
'    
'       encyclopædia = encyclopedia (CurrentCulture): False
'       encyclopædia = encyclopedia (CurrentCultureIgnoreCase): False
'       encyclopædia = encyclopedia (InvariantCulture): False
'       encyclopædia = encyclopedia (InvariantCultureIgnoreCase): False
'       encyclopædia = encyclopedia (Ordinal): False
'       encyclopædia = encyclopedia (OrdinalIgnoreCase): False
'    
'       Archæology = ARCHÆOLOGY (CurrentCulture): False
'       Archæology = ARCHÆOLOGY (CurrentCultureIgnoreCase): True
'       Archæology = ARCHÆOLOGY (InvariantCulture): False
'       Archæology = ARCHÆOLOGY (InvariantCultureIgnoreCase): True
'       Archæology = ARCHÆOLOGY (Ordinal): False
'       Archæology = ARCHÆOLOGY (OrdinalIgnoreCase): True

설명

StringComparison열거형은 문자열 비교가 현재 문화권 또는 고정 문화권, 단어 또는 서 수 정렬 규칙을 사용 해야 하는지 여부를 지정 하 고 대/소문자를 구분 하거나 대/소문자를 구분 하지 않아야 하는지 여부를 지정 하는 데 사용 됩니다.The StringComparison enumeration is used to specify whether a string comparison should use the current culture or the invariant culture, word or ordinal sort rules, and be case-sensitive or case-insensitive.

중요

, 또는와 같은 문자열 비교 메서드를 호출 하는 경우 String.Compare String.Equals String.IndexOf StringComparison 메서드가 수행 하는 비교 형식을 지정할 수 있도록 항상 형식의 매개 변수를 포함 하는 오버 로드를 호출 해야 합니다.When you call a string comparison method such as String.Compare, String.Equals, or String.IndexOf, you should always call an overload that includes a parameter of type StringComparison so that you can specify the type of comparison that the method performs. 자세한 내용은 문자열 사용에 대한 모범 사례를 참조하세요.For more information, see Best Practices for Using Strings.

단어 정렬 규칙을 사용 하는 작업은 문화권 구분 비교를 수행 합니다. 즉, 영숫자가 아닌 특정 유니코드 문자에 특수 가중치가 할당 될 수 있습니다.An operation that uses word sort rules performs a culture-sensitive comparison wherein certain nonalphanumeric Unicode characters might have special weights assigned to them. 단어 정렬 규칙 및 특정 문화권의 규칙을 사용 하 여 하이픈 ("-")에 매우 작은 가중치가 할당 될 수 있으므로 정렬 된 목록에서 "coop" 및 "공동 op"가 서로 옆에 표시 됩니다.Using word sort rules and the conventions of a specific culture, the hyphen ("-") might have a very small weight assigned to it so that "coop" and "co-op" appear next to each other in a sorted list.

참고

Linux 및 macOS 시스템 에서만 실행 되는 .Net Core: C 및 Posix 문화권의 데이터 정렬 동작은 항상 대/소문자를 구분 합니다. 이러한 문화권은 필요한 유니코드 데이터 정렬 순서를 사용 하지 않기 때문입니다..NET Core running on Linux and macOS systems only: The collation behavior for the C and Posix cultures is always case-sensitive because these cultures do not use the expected Unicode collation order. C 또는 Posix 이외의 문화권을 사용하여 문화권 구분, 대/소문자 비구분 정렬 작업을 수행하는 것이 좋습니다.We recommend that you use a culture other than C or Posix for performing culture-sensitive, case-insensitive sorting operations.

서 수 정렬 규칙을 사용 하는 작업은 문자열의 각에 대 한 숫자 값 (유니코드 코드 포인트)을 기반으로 비교를 수행 합니다 Char .An operation that uses ordinal sort rules performs a comparison based on the numeric value (Unicode code point) of each Char in the string. 서 수 비교는 빠르지만 문화권을 구분 하지 않습니다.An ordinal comparison is fast but culture-insensitive. 서 수 정렬 규칙을 사용 하 여 유니코드 문자 (U +)로 시작 하는 문자열을 정렬 하는 경우 xxxx의 값이 yyyy 보다 작은 경우 U + xxxx 문자열이 U + yyyy 앞에 나옵니다.When you use ordinal sort rules to sort strings that start with Unicode characters (U+), the string U+xxxx comes before the string U+yyyy if the value of xxxx is numerically less than yyyy.

비교에 대 한 자세한 내용은 System.String 클래스 설명을 참조 하세요.For more information about comparisons, see the System.String class remarks. 문화권에 대 한 자세한 내용은 System.Globalization.CultureInfo 클래스 설명을 참조 하세요.For more information about culture, see the System.Globalization.CultureInfo class remarks. 서 수 또는 문화권 구분 비교 규칙이 나 고정 문화권의 규칙을 사용 하는 경우에 대 한 지침은 문자열 사용에 대 한 모범 사례를 참조 하세요.For guidelines on when to use ordinal or culture-sensitive comparison rules or the rules of the invariant culture, see Best Practices for Using Strings. Windows 운영 체제의 정렬 및 비교 작업에 사용 되는 문자 가중치에 대 한 정보가 포함 된 텍스트 파일 집합은 가중치 테이블 정렬을 참조 하세요.For a set of text files that contain information on the character weights used in sorting and comparison operations for Windows operating systems, see Sorting Weight Tables. Linux 및 macOS에 대 한 정렬 가중치 테이블은 기본 유니코드 데이터 정렬 요소 표를 참조 하세요.For the sort weight table for Linux and macOS, see the Default Unicode Collation Element Table.

적용 대상

추가 정보