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

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

2013/12/13

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

Namespace:  System
程序集:  mscorlib(位于 mscorlib.dll 中)

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
一个整数,指示两个子字符串之间的词法关系。

条件

小于零

strA 中的子字符串小于 strB 中的子字符串。

两个子字符串相等或者 length 为零。

大于零

strA 中的子字符串大于 strB 中的子字符串。

异常条件
ArgumentException

options 不是一个 CompareOptions 值。

ArgumentOutOfRangeException

indexA 大于 strA.Length

- 或 -

indexB 大于 strB.Length

- 或 -

indexAindexBlength 为负。

- 或 -

strAstrBnull,而 length 大于零。

ArgumentNullException

culturenull

strAstrB 中要比较的子字符串分别从 indexAindexB 开始。第一个子字符串的长度为 strA 的长度减 indexA。第二个子字符串的长度为 strB 的长度减 indexB

要比较的字符数是两个子字符串的长度和 length 中较少的那一个。indexAindexBlength 参数必须为非负数。

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

警告说明警告:

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

strA 和/或 strB 可以为 null。根据定义,任何字符串(包括 String.Empty)都大于 null 引用,两个 null 引用相等。

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

当发现不相等或已经比较了两个子字符串时,比较就会终止。但是,如果两个字符串一直比较到其中一个字符串的末尾时仍相同,而另一个字符串仍有剩余字符,则认为仍有剩余字符的字符串较大。返回值为执行最后一次比较所得的结果。

下面的示例使用 Compare(String, Int32, String, Int32, Int32, CultureInfo, CompareOptions) 方法比较两个人的姓氏。然后,按字母顺序列出比较结果。


public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      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);

      outputBlock.Text += "Sorted alphabetically by last name:\n";
      if (String.Compare(name1, index1, name2, index2, length, 
                         new CultureInfo("en-US"), CompareOptions.IgnoreCase) < 0)
         outputBlock.Text += name1 + "\n" + name2; 
      else
         outputBlock.Text += name2 + "\n" + name1; 
   }
}


Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

显示: