이 설명서는 보관되지만 유지 되지 않습니다.

CompareOptions 열거형

업데이트: 2007년 11월

CompareInfo와 함께 사용할 문자열 비교 옵션을 정의합니다.

이 열거형에는 멤버 값을 비트로 조합할 수 있는 ComVisibleAttribute 특성이 있습니다.

네임스페이스:  System.Globalization
어셈블리:  mscorlib(mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
[FlagsAttribute]
public enum CompareOptions
/** @attribute SerializableAttribute */ 
/** @attribute ComVisibleAttribute(true) */
/** @attribute FlagsAttribute */
public enum CompareOptions
public enum CompareOptions

멤버 이름설명
None문자열 비교를 위한 기본 옵션 설정을 나타냅니다.
IgnoreCase이 문자열 비교 옵션은 대/소문자를 무시함을 나타냅니다.
IgnoreNonSpace분음 부호와 같이 공백 없는 조합 문자를 무시하는 문자열 비교를 나타냅니다. 유니코드 표준(Unicode Standard)에서 조합 문자는 기본 문자와 조합하여 새 문자를 만들어내는 문자로 정의됩니다. 간격이 없는 조합 문자는 렌더링될 때 스스로 공간을 차지하지 않습니다. 간격이 없는 조합 문자에 대한 자세한 내용은 Unicode home page에 있는 Unicode Standard를 참조하십시오.
IgnoreSymbols이 문자열 비교 옵션은 공백 문자, 문장 부호, 통화 기호, 백분율 기호, 수학 기호, 앰퍼샌드 등의 기호를 무시함을 나타냅니다.
IgnoreKanaType이 문자열 비교 옵션은 일본어 가나 형식을 무시함을 나타냅니다. 가나 형식은 일본어의 발성음을 표현하는 히라가나 문자와 가타카나 문자를 나타냅니다. 히라가나는 일본 고유의 어구과 단어를 표현하는 데 사용되고, 가타카나는 "컴퓨터"나 "인터넷" 등과 같은 외래어를 표현하는 데 사용됩니다. 발성음은 히라가나와 가타카나 모두로 표현할 수 있습니다. 이 값이 선택되어 있으면 하나의 발성음에 대해 히라가나 문자와 가타카나 문자가 같은 것으로 간주됩니다.
IgnoreWidth이 문자열 비교 옵션은 문자 너비를 무시함을 나타냅니다. 예를 들어 일본어의 가타카나 문자는 전자나 반자로 쓸 수 있는데, 이 값이 선택되어 있으면 전자로 쓰여진 가타카나 문자와 반자로 쓰여진 가타카나 문자가 같은 것으로 간주됩니다.
OrdinalIgnoreCase문자열 비교에서는 대/소문자를 무시하고 서수 비교를 수행해야 합니다. 이 기술은 고정 문화권을 사용하여 문자열을 대문자로 변환한 다음 해당 결과에 대해 서수 비교를 수행하는 것과 같습니다.
StringSort이 문자열 비교 옵션은 문자열 정렬 알고리즘을 사용해야 함을 나타냅니다. 문자열 정렬에서 하이픈, 아포스트로피, 비영숫자 기호 등이 영숫자 문자 앞에 옵니다.
Ordinal이 문자열 비교 옵션은 각 문자의 유니코드 값을 사용하여 문자열을 비교해야 함을 나타냅니다. 이 값을 사용하면 문자열을 빠르게 비교할 수 있지만 문화권을 구분할 수는 없습니다. xxxx가 yyyy보다 작은 경우 "U+xxxx"로 시작하는 문자열은 "U+yyyy"로 시작하는 문자열 앞에 옵니다. 이 값은 다른 CompareOptions 값과 함께 사용할 수 없으며 단독으로 사용해야 합니다.

이 옵션은 대/소문자 구분 방식을 나타내거나 문자 형식을 무시해야 하는지를 나타냅니다.

.NET Framework에서는 단어 정렬, 문자열 정렬, 서수 정렬이라는 세 가지 정렬 방법을 사용합니다. 단어 정렬에서는 문화권 구분 문자열 비교를 수행합니다. 특정 비영숫자 문자에는 특수한 가중치가 할당될 수 있습니다. 예를 들면, 하이픈("-")에는 매우 적은 가중치가 할당될 수 있으므로 "coop"와 "co-op"는 정렬된 목록에서 서로 붙어있을 수 있습니다. 문자열 정렬은 이와 같은 특수한 상황이 없다는 점을 제외하고 단어 정렬과 비슷합니다. 따라서 모든 비영숫자 기호가 모든 영숫자 앞에 옵니다. 서수 정렬은 문자열의 각 요소의 유니코드 값을 기준으로 문자열을 비교합니다.

StringSort 값은 CompareInfo.CompareCompareInfo.GetSortKey에 대해서만 사용할 수 있습니다. StringSort 값을 CompareInfo.IsPrefix , CompareInfo.IsSuffix , CompareInfo.IndexOf 또는 CompareInfo.LastIndexOf에서 사용하면 ArgumentException이 throw됩니다.

다음 코드 예제에서는 StringSort를 사용한 정렬이 StringSort를 사용하지 않은 정렬과 어떻게 다른지 보여 줍니다.

using System;
using System.Collections;
using System.Globalization;


public class SamplesCompareOptions  {

   private class MyStringComparer: IComparer {
      private CompareInfo myComp;   
      private CompareOptions myOptions = CompareOptions.None;

      // Constructs a comparer using the specified CompareOptions.
      public MyStringComparer( CompareInfo cmpi, CompareOptions options )  {
         myComp = cmpi;
         this.myOptions = options;
      }

      // Compares strings with the CompareOptions specified in the constructor.
      public int Compare(Object a, Object b) {
         if (a == b) return 0;
         if (a == null) return -1;
         if (b == null) return 1;

         String sa = a as String;
         String sb = b as String;
         if (sa != null && sb != null)
            return myComp.Compare(sa, sb, myOptions);
         throw new ArgumentException("a and b should be strings.");

      }
   }

   public static void Main()  {

      // Creates and initializes an array of strings to sort.
      String[] myArr = new String[9] { "cant", "bill's", "coop", "cannot", "billet", "can't", "con", "bills", "co-op" };
      Console.WriteLine( "\nInitially," );
      foreach ( String myStr in myArr )
         Console.WriteLine( myStr );

      // Creates and initializes a Comparer to use.
      //CultureInfo myCI = new CultureInfo( "en-US", false );
      MyStringComparer myComp = new MyStringComparer(CompareInfo.GetCompareInfo("en-US"), CompareOptions.None);

      // Sorts the array without StringSort.
      Array.Sort( myArr, myComp );
      Console.WriteLine( "\nAfter sorting without CompareOptions.StringSort:" );
      foreach ( String myStr in myArr )
         Console.WriteLine( myStr );

      // Sorts the array with StringSort.
      myComp = new MyStringComparer(CompareInfo.GetCompareInfo("en-US"), CompareOptions.StringSort);
      Array.Sort( myArr, myComp );
      Console.WriteLine( "\nAfter sorting with CompareOptions.StringSort:" );
      foreach ( String myStr in myArr )
         Console.WriteLine( myStr );

   }

}

/*
This code produces the following output.

Initially,
cant
bill's
coop
cannot
billet
can't
con
bills
co-op

After sorting without CompareOptions.StringSort:
billet
bills
bill's
cannot
cant
can't
con
coop
co-op

After sorting with CompareOptions.StringSort:
bill's
billet
bills
can't
cannot
cant
co-op
con
coop

*/


import System.* ;
import System.Collections.* ;
import System.Globalization.* ;

public class SamplesCompareOptions
{
    private class MyStringComparer implements IComparer
    {
        private CompareInfo myComp;
        private CompareOptions myOptions = CompareOptions.None;

        // Constructs a comparer using the specified CompareOptions.
        public MyStringComparer(CompareInfo cmpi, CompareOptions options)
        {
            myComp = cmpi;
            this.myOptions = options;
        } //MyStringComparer

        // Compares strings with the CompareOptions specified in the 
        // constructor.
        public int Compare(Object a, Object b)
        {
            if (a == b) {
                return 0;
            }
            if (a == null) {
                return -1;
            }
            if (b == null) {
                return 1;
            }

            String sa =(String) a;
            String sb = (String)b;
            if (sa  != null && sb  != null) {
                return myComp.Compare(sa, sb, myOptions);
            }
            throw new ArgumentException("a and b should be strings.");
        } //Compare 
    } //MyStringComparer

    public static void main(String[] args)
    {
        // Creates and initializes an array of strings to sort.
        String myArr[] = new String[]{"cant", "bill's", "coop", "cannot", 
            "billet", "can't", "con", "bills", "co-op"};
        Console.WriteLine("\nInitially,");
            SamplesCompareOptions mySamplesCompareOptions = 
                new SamplesCompareOptions();    

        for(int i=0 ; i < myArr.length ;i++) {
            String myStr = myArr[i];
            Console.WriteLine(myStr);
        }
        // Creates and initializes a Comparer to use.
        //CultureInfo myCI = new CultureInfo( "en-US", false );
        MyStringComparer myComp = mySamplesCompareOptions.new MyStringComparer(
            CompareInfo.GetCompareInfo("en-US"), CompareOptions.None);

        // Sorts the array without StringSort.
        Array.Sort(myArr, myComp);
        Console.WriteLine("\nAfter sorting without CompareOptions.StringSort:");

        for(int i=0; i< myArr.length ;i++) {
            String myStr = myArr[i];
            Console.WriteLine(myStr);
        }

        // Sorts the array with StringSort.
        myComp = mySamplesCompareOptions.new MyStringComparer(
            CompareInfo.GetCompareInfo("en-US"), CompareOptions.StringSort);
        Array.Sort(myArr, myComp);
        Console.WriteLine("\nAfter sorting with CompareOptions.StringSort:");

        for(int i=0; i< myArr.length ;i++) {
            String myStr = myArr[i];
            Console.WriteLine(myStr);
        }
    } //main 
} //SamplesCompareOptions

/*
This code produces the following output.

Initially,
cant
bill's
coop
cannot
billet
can't
con
bills
co-op

After sorting without CompareOptions.StringSort:
billet
bills
bill's
cannot
cant
can't
con
coop
co-op

After sorting with CompareOptions.StringSort:
bill's
billet
bills
can't
cannot
cant
co-op
con
coop
*/


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360

.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

.NET Framework

3.5, 3.0, 2.0, 1.1, 1.0에서 지원

.NET Compact Framework

3.5, 2.0, 1.0에서 지원

XNA Framework

2.0, 1.0에서 지원
표시: