StringComparison 枚举
TOC
折叠目录
展开目录

StringComparison 枚举

 

指定 String.CompareString.Equals 方法的某些重载要使用的区域、大小写和排序规则。

命名空间:   System
程序集:  mscorlib(mscorlib.dll 中)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public enum StringComparison

成员名称说明
CurrentCulture

使用区域敏感排序规则和当前区域比较字符串。

CurrentCultureIgnoreCase

使用区域敏感排序规则、当前区域来比较字符串,同时忽略被比较字符串的大小写。

InvariantCulture

使用区域敏感排序规则和固定区域比较字符串。

InvariantCultureIgnoreCase

使用区域敏感排序规则、固定区域来比较字符串,同时忽略被比较字符串的大小写。

Ordinal

使用序号排序规则比较字符串。

OrdinalIgnoreCase

使用序号排序规则并忽略被比较字符串的大小写,对字符串进行比较。

StringComparison 枚举用于指定字符串比较是使用当前区域还是固定区域、使用字词还是序号排序规则以及是否区分大小写。

System_CAPS_important重要事项

当您调用一个字符串比较方法例如 String.CompareString.EqualsString.IndexOf时,应始终调用包括类型 StringComparison 参数的重载载,以便您能够指定方法执行比较的类型。有关详细信息,请参阅在 .NET Framework 中使用字符串的最佳做法

使用字词排序规则的操作执行一个区域敏感比较,在这个比较中可能会为非字母数字的 Unicode 字符分配特殊权重。使用字词排序规则和特定区域的约定,连字符(“-”)的权重可能非常小,因此“coop”和“co-op”在排序列表中是紧挨着出现的。

使用序号排序规则的操作基于字符串中每个 Char 的数字值(Unicode 码位)执行比较。序号比较很快,但是不具有区域敏感性。 当使用序号排序规则对以 Unicode 字符 (U+) 开头的字符串排序时,如果 xxxx 的值比 yyyy 的值小,字符串 U+xxxx 会排在字符串 U+yyyy 之前。

有关比较的更多信息,请参见 System.String 类备注。有关区域的更多信息,请参见 System.Globalization.CultureInfo 类备注。有关何时使用序号或区分区域性的比较规则或固定区域性规则的指南,请参见在 .NET Framework 中使用字符串的最佳做法

下列示例使用 StringComparison 枚举的每个成员比较四组词语。使用英语 (美国) 和瑟米 (上半部分的瑞典) 区域性约定的比较。请注意字符串“encyclopædia”和“encyclopedia”在 en-us 区域性(但不在瑟米北方 (瑞典) 区域性)被视为等效。

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

Universal Windows Platform
4.5 后可用
.NET Framework
2.0 后可用
Portable Class Library
受以下版本支持:portable .NET platforms
Silverlight
2.0 后可用
Windows Phone Silverlight
7.0 后可用
Windows Phone
8.1 后可用
返回页首
显示:
© 2016 Microsoft