エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

CompareOptions 列挙体

2013/12/12

各種の文字列比較メソッドで使用するオプションを定義します。

この列挙体には、メンバー値のビットごとの組み合わせを可能にする FlagsAttribute 属性が含まれています。

Namespace:  System.Globalization
アセンブリ:  mscorlib (mscorlib.dll 内)

[FlagsAttribute]
public enum CompareOptions

メンバー名説明
IgnoreCase文字列比較で大文字と小文字の区別を無視することを示します。
IgnoreKanaType文字列比較でカナ型を無視することを示します。カナ型とは、日本語の発音を表すひらがなとカタカナの文字を指します。ひらがなは、本来の日本語の表現と単語に使用し、カタカナは "コンピューター" または "インターネット" などの外来語に使用します。発音は、ひらがなとカタカナのどちらでも表現できます。この値が選択されている場合、ある発音を示すひらがなは、同じ発音を示すカタカナと同一であると見なされます。
IgnoreNonSpace文字列比較で、発音区別符など、非スペーシング組み合わせ文字を無視するように指定します。Unicode 標準は、基本文字を組み合わせて生成される新しい文字を組み合わせ文字として定義しています。非スペーシング組み合わせ文字は、表示されるときに文字間隔用の領域は確保しません。非スペーシング組み合わせ文字の詳細については、Unicode のホーム ページの「The Unicode Standard」を参照してください。
IgnoreSymbols文字列比較において、空白文字、句読点、通貨記号、パーセント記号、算術記号、アンパサンドなどの記号を無視することを示します。
IgnoreWidth文字列比較において、半角と全角の区別を無視することを示します。たとえば、日本語のカタカナ文字は、全角または半角で記述できます。この値を選択した場合、全角で記述されたカタカナ文字は、半角で記述されたカタカナ文字と同一であると見なされます。
None文字列比較の既定のオプション設定を示します。
Ordinal各文字の Unicode 値を使用して、文字列を比較することを示します。この比較は高速ですが、カルチャに応じた処理は行いません。xxxx が yyyy よりも小さい場合、"U+xxxx" で始まる文字列は "U+yyyy" で始まる文字列よりも前になります。この値を他の CompareOptions 値と組み合わせることはできません。この値は単独で使用してください。
OrdinalIgnoreCase文字列の比較で大文字と小文字の違いを無視し、通常の比較を実行する必要があります。この手法は、インバリアント カルチャを使用して文字列を大文字に変換し、その結果に対して序数に基づく比較を実行することと同じです。
StringSort文字列の比較時に、文字列での並べ替えアルゴリズムを使用することを示します。文字列での並べ替えでは、ハイフン、アポストロフィ、およびその他の英数字以外の記号が英数字よりも前にきます。

CompareOptions 列挙体のメンバーは、CompareInfo の各種メソッドのほか、Compare メソッドのいくつかのオーバーロードで使用されます。これらは、大文字と小文字を区別するかどうか、または文字の種類を無視するかどうかを示します。

.NET Framework は、単語での並べ替え、文字列での並べ替え、序数での並べ替えの異なる 3 種類の並べ替えの方法を使用します。単語での並べ替えでは、カルチャを考慮した文字列比較が実行されます。英数字以外の特定の文字に特別な重みが割り当てられる場合があります。たとえば、ハイフン ("-") に割り当てられる重みは非常に小さいため、並べ替えられたリスト内の "coop" と "co-op" の出現位置は隣接します。文字列での並べ替えは、単語での並べ替えに似ていますが、例外的な処理は行われません。このため、英数字以外のすべての記号がどの英数字よりも前に来ます。序数での並べ替えでは、文字列の各要素の Unicode 値を元に文字列が比較されます。

CompareOptions.StringSort 値は、CompareInfo.Compare および Compare の適切なオーバーロードでのみ使用できます。StringSort 値を CompareInfo.IsPrefixCompareInfo.IsSuffixCompareInfo.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

表示:
© 2014 Microsoft