System.String.Compare 方法 (String, String, CultureInfo, CompareOptions)

方法描述

对两个指定的 String 对象进行比较,使用指定的比较选项和区域性特定的信息来影响比较,并返回一个整数,该整数指示这两个字符串在排序顺序中的关系。

语法定义(C# System.String.Compare 方法 (String, String, CultureInfo, CompareOptions) 的用法)

public static int Compare(
	string strA,
	string strB,
	CultureInfo culture,
	CompareOptions options
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
strA System-String 要比较的第一个字符串。
strB System-String 要比较的第二个字符串。
culture System-Globalization-CultureInfo 提供区域性特定的比较信息的区域性。
options System-Globalization-CompareOptions 要在执行比较时使用的选项(如忽略大小写或符号)。
返回值 System.Int32 一个 32 位带符号整数,该整数指示 strA 与 strB 之间的词法关系,如下表所示 值 Condition 小于零 strA 小于 strB。 零 strA 等于 strB。 大于零 strA 大于 strB。

提示和注释

此比较操作使用 culture 参数来获取区域性特定的信息,如大小写规则和各字符的字母顺序。 例如,特定的区域性可以指定:将某些字符组合视为单个字符,用特定方法比较大写和小写字符,或者字符的排序顺序取决于它前面或后面的字符。

警告

Compare(String, String, CultureInfo, CompareOptions) 方法主要用于排序或按字母顺序排列操作。 如果方法调用的主要目的在于确定两个字符串是否相等(即,方法调用的目的在于测试返回值是否为零),则不应使用此方法。 若要确定两个字符串是否相等,请调用 Equals 方法。

通过 options 参数可以进一步指定比较,该参数由 CompareOptions 枚举的一个或多个成员组成。 但是,由于此方法的目的在于执行区分区域性的字符串比较,因此 CompareOptions.Ordinal 和 CompareOptions.OrdinalIgnoreCase 值将不起作用。

两个比较数或其中任何一个都可以为 null。 根据定义,任何字符串(包括 String.Empty)都大于 null 引用,两个 null 引用相等。

当发现不相等或已经比较了两个字符串时,比较就会终止。 但是,如果两个字符串一直比较到其中一个字符串的末尾时仍相同,而另一个字符串仍有剩余字符,则认为仍有剩余字符的字符串较大。

System.String.Compare 方法 (String, String, CultureInfo, CompareOptions)例子

此示例还演示这三种比较方法生成三种不同结果的过程。

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string string1 = "brother";
      string string2 = "Brother";
      string relation;
      int result;

      // Cultural (linguistic) comparison.
      result = String.Compare(string1, string2, new CultureInfo("en-US"), 
                              CompareOptions.None);
      if (result > 0)
         relation = "comes after";
      else if (result == 0)
         relation = "is the same as";
      else
         relation = "comes before";

      Console.WriteLine("'{0}' {1} '{2}'.", 
                        string1, relation, string2);

      // Cultural (linguistic) case-insensitive comparison.
      result = String.Compare(string1, string2, new CultureInfo("en-US"), 
                              CompareOptions.IgnoreCase);
      if (result > 0)
         relation = "comes after";
      else if (result == 0)
         relation = "is the same as";
      else
         relation = "comes before";

      Console.WriteLine("'{0}' {1} '{2}'.", 
                        string1, relation, string2);

       // Culture-insensitive ordinal comparison.
      result = String.CompareOrdinal(string1, string2);
      if (result > 0)
         relation = "comes after";
      else if (result == 0)
         relation = "is the same as";
      else
         relation = "comes before";

      Console.WriteLine("'{0}' {1} '{2}'.", 
                        string1, relation, string2);
   }
}
// The example produces the following output:
//    'brother' comes before 'Brother'.   
//    'brother' is the same as 'Brother'.
//    'brother' comes after 'Brother'.

异常

异常 异常描述
ArgumentException options 不是一个 CompareOptions 值。
ArgumentNullException culture 为 null。

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.NET Framework 受以下版本支持:4、3.5 SP1、3.0 SP2、2.0 SP2 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1 受以下版本支持:

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。