Прочитать на английском

Поделиться через


CompareOptions Перечисление

Определение

Определяет параметры сравнения строк для использования с классом CompareInfo.

Это перечисление поддерживает побитовую комбинацию значений его членов.

C#
[System.Flags]
public enum CompareOptions
C#
[System.Flags]
[System.Serializable]
public enum CompareOptions
C#
[System.Flags]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum CompareOptions
Наследование
CompareOptions
Атрибуты

Поля

Имя Значение Описание
IgnoreCase 1

Указывает, что сравнение строк не должно учитывать регистр.

IgnoreKanaType 8

Указывает, что при сравнении строк необходимо игнорировать тип "Кана". Типы японской азбуки Каны обозначают символы хираганы и катаканы, представляющие звуки японского языка. Хирагана используется для японских выражений и слов, а катакана — для слов, заимствованных из других языков, например "компьютер" и "Интернет". Для обозначения любого звука может быть использована как хирагана, так и катакана. Если выбрано это значение, знаки хирагана и катакана для одного и того же звука считаются равными.

IgnoreNonSpace 2

Указывает, что при сравнении строк необходимо игнорировать не занимающие место несамостоятельные знаки, например, диакритические. В стандарте Юникода комбинированные символы определяются как символы, объединяемые с базовыми символами для получения нового символа. Непробельные составные символы в своем представлении не требуют дополнительного пространства.

IgnoreSymbols 4

Указывает, что при сравнении строк необходимо игнорировать такие символы, как разделители, знаки препинания, знаки денежных единиц, знак процента, математические символы, амперсанд и т. д.

IgnoreWidth 16

Указывает, что при сравнении строк необходимо игнорировать ширину символа. Например, символы японской катаканы могут быть написаны в полную ширину или в половину ширины. Если выбрано это значение, знаки катаканы, написанные в полную ширину, считаются равными тем же знакам, написанным в половину ширины.

None 0

Указывает настройки параметров по умолчанию для сравнения строк.

Ordinal 1073741824

Указывает, что при сравнении строк должны использоваться последовательные значения строки в кодировке Юникода UTF-16 (последовательное сравнение единиц кода). Это позволяет быстро выполнить сравнение, которое, однако, не учитывает особенностей, связанных с языком и региональными параметрами. Строка, начинающаяся с единицы кода XXXX16, отображается перед строкой, начинающейся с YYYY16, если XXXX16 меньше YYYY16. Это значение не может быть объединено с другими значениями CompareOptions и должно использоваться обособленно.

OrdinalIgnoreCase 268435456

При сравнении строк не должен учитываться регистр. После этого выполняется обычное сравнение. Этот способ аналогичен преобразованию строки в верхний регистр с помощью инвариантного языка и региональных параметров и выполнению порядкового сравнения результатов.

StringSort 536870912

Указывает, что при сравнении строк следует использовать алгоритм сортировки строк. В строке сортировки дефис, апостроф, а также другие знаки, не являющиеся буквенно-цифровыми, предшествуют буквенно-цифровым знакам.

Примеры

C#
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

*/

Комментарии

Дополнительные сведения об этом API см. в разделе Дополнительные примечания API для CompareOptions.

Применяется к

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

См. также раздел