信息
您所需的主题如下所示。但此主题未包含在此库中。

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

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

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

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 位带符号整数,该整数指示 strAstrB 之间的词法关系,如下表所示

条件

小于零

strA 小于 strB

strA 等于 strB

大于零

strA 大于 strB

异常条件
ArgumentException

options 不是一个 CompareOptions 值。

ArgumentNullException

culturenull

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

警告说明警告

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

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

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

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

对调用者的说明

字符集包括可忽略字符,在执行语言性的或区分区域性的比较时该字符不被考虑。 在执行区分区域性的比较时,Compare(String, String, CultureInfo, CompareOptions) 方法不考虑这样的字符。 若要识别比较中的可忽略字符,请为options 参数提供 CompareOptions.OrdinalCompareOptions.OrdinalIgnoreCase 值。

下面的示例使用以下三种不同的方法来比较两个字符串:使用 en-US 区域性的语义比较;使用 en-US 区域性的区分大小写语义比较;以及使用序号比较。 此示例还演示这三种比较方法生成三种不同结果的过程。


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'.


.NET Framework

受以下版本支持:4.5.2、4.5.1、4.5、4、3.5 SP1、3.0 SP2、2.0 SP2

.NET Framework Client Profile

受以下版本支持:4、3.5 SP1

可移植类库

受以下版本支持:可移植类库

适用于 Windows Phone 应用的 .NET

受以下版本支持:Windows Phone 8、Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(不支持服务器核心角色), Windows Server 2008 R2(支持带 SP1 或更高版本的服务器核心角色;不支持 Itanium)

.NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参阅.NET Framework 系统要求

社区附加资源

显示:
© 2014 Microsoft