내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

CompareOptions 열거형

2013-12-13

여러 문자열 비교 메서드에 사용할 옵션을 정의합니다.

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

Namespace:  System.Globalization
어셈블리:  mscorlib(mscorlib.dll)

[FlagsAttribute]
public enum CompareOptions

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

CompareOptions 열거형의 멤버는 여러 CompareInfo 메서드뿐만 아니라 Compare 메서드의 몇 가지 오버로드에도 사용됩니다. 이러한 옵션은 대/소문자 구분 여부 또는 문자 형식을 무시할지 여부를 나타냅니다.

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

CompareOptions.StringSort 값은 CompareInfo.CompareCompare의 적절한 오버로드에서만 사용할 수 있습니다. StringSort 값을 CompareInfo.IsPrefix, CompareInfo.IsSuffix, CompareInfo.IndexOf 또는 CompareInfo.LastIndexOf와 함께 사용하면 ArgumentException이 발생합니다.

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


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


public class Example
{

   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 Demo(System.Windows.Controls.TextBlock outputBlock)
   {

      // 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" };
      outputBlock.Text += String.Format("\nInitially,") + "\n";
      foreach (String myStr in myArr)
         outputBlock.Text += myStr + "\n";

      // 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);
      outputBlock.Text += "\nAfter sorting without CompareOptions.StringSort:" + "\n";
      foreach (String myStr in myArr)
         outputBlock.Text += myStr + "\n";

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

   }

}

/*
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 Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

표시:
© 2014 Microsoft