System.String.Compare 方法 (String, Int32, String, Int32, Int32, CultureInfo, CompareOptions)
方法描述
对两个指定 String 对象的子字符串进行比较,使用指定的比较选项和区域性特定的信息来影响比较,并返回一个整数,该整数指示这两个子字符串在排序顺序中的关系。
语法定义(C# System.String.Compare 方法 (String, Int32, String, Int32, Int32, CultureInfo, CompareOptions) 的用法)
public static int Compare( string strA, int indexA, string strB, int indexB, int length, CultureInfo culture, CompareOptions options )
参数/返回值
| 参数值/返回值 | 参数类型/返回类型 | 参数描述/返回描述 | 
|---|---|---|
| strA | System-String | 要在比较中使用的第一个字符串。 | 
| indexA | System-Int32 | strA 中子字符串的起始位置。 | 
| strB | System-String | 要在比较中使用的第二个字符串。 | 
| indexB | System-Int32 | strB 中子字符串的起始位置。 | 
| length | System-Int32 | 要比较的子字符串中字符的最大数量。 | 
| culture | System-Globalization-CultureInfo | 一个对象,提供区域性特定的比较信息。 | 
| options | System-Globalization-CompareOptions | 要在执行比较时使用的选项(如忽略大小写或符号)。 | 
| 返回值 | System.Int32 | 一个整数,该整数用于指示两个子字符串之间的词法关系,如下表所示。 值 Condition 小于零 strA 中的子字符串小于 strB 中的子字符串。 零 两个子字符串相等或者 length 为零。 大于零 strA 中的子字符串大于 strB 中的子字符串。 | 
提示和注释
strA 和 strB 中要比较的子字符串分别从 indexA 和 indexB 开始 第一个子字符串的长度为 strA 的长度减 indexA。 第二个子字符串的长度为 strB 的长度减 indexB。
要比较的字符数是两个子字符串的长度和 length 中较少的那一个。 indexA、indexB 和 length 参数必须为非负数。
此比较操作使用 culture 参数来获取区域性特定的信息,如大小写规则和各字符的字母顺序。 例如,特定的区域性可以指定:将某些字符组合视为单个字符,用特定方法比较大写和小写字符,或者字符的排序顺序取决于它前面或后面的字符。
警告
Compare(String, Int32, String, Int32, Int32, CultureInfo, CompareOptions) 方法主要用于排序或按字母顺序排列操作。 如果方法调用的主要目的在于确定两个子字符串是否相等(即,方法调用的目的在于测试返回值是否为零),则不应使用此方法。 若要确定两个字符串是否相等,请调用 Equals 方法。
strA 和/或 strB 可以为 null。 根据定义,任何字符串(包括 String.Empty)都大于 null 引用,两个 null 引用相等。
通过 options 参数可以进一步指定比较,该参数由 System.Globalization.CompareOptions 枚举的一个或多个成员组成。 但是,由于此方法的目的在于执行区分区域性的字符串比较,因此 CompareOptions.Ordinal 和 CompareOptions.OrdinalIgnoreCase 值将不起作用。
当发现不相等或已经比较了两个子字符串时,比较就会终止。 但是,如果两个字符串一直比较到其中一个字符串的末尾时仍相同,而另一个字符串仍有剩余字符,则认为仍有剩余字符的字符串较大。 返回值为执行最后一次比较所得的结果。
System.String.Compare 方法 (String, Int32, String, Int32, Int32, CultureInfo, CompareOptions)例子
然后,按字母顺序列出比较结果。
using System;
using System.Globalization;
public class Example
{
   public static void Main()
   {
      string name1 = "Jack Smith";
      string name2 = "John Doe";
      // Get position of space character.
      int index1 = name1.IndexOf(" ");
      index1 = index1 < 0 ? 0 : index1--;
      int index2 = name2.IndexOf(" ");
      index1 = index1 < 0 ? 0 : index1--;
      int length = Math.Max(name1.Length, name2.Length);
      Console.WriteLine("Sorted alphabetically by last name:");
      if (String.Compare(name1, index1, name2, index2, length, 
                         new CultureInfo("en-US"), CompareOptions.IgnoreCase) < 0)
         Console.WriteLine("{0}\n{1}", name1, name2); 
      else
         Console.WriteLine("{0}\n{1}", name2, name1); 
   }
}
// The example displays the following output:
//       Sorted alphabetically by last name:
//       John Doe
//       Jack Smith
异常
| 异常 | 异常描述 | 
|---|---|
| ArgumentException | options 不是一个 CompareOptions 值。 | 
| ArgumentOutOfRangeException | 
 | 
| ArgumentNullException | culture 为 null。 | 
版本信息
.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 系统要求。