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
  • indexA 大于 strA.Length。
  • indexB 大于 strB.Length。
  • indexA、indexB 或 length 为负。
  • strA 或 strB 为 null,而 length 大于零。
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 系统要求。