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

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

2013/12/13

对从两个指定的 String 对象中提取的子字符串执行区分区域性的比较,并返回一个指示二者在排序顺序中的相互关系的整数。

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

public static int Compare(
	string strA,
	int indexA,
	string strB,
	int indexB,
	int length
)

参数

strA
类型: System.String
要在比较中使用的第一个字符串。
indexA
类型: System.Int32
strA 中子字符串的位置。
strB
类型: System.String
要在比较中使用的第二个字符串。
indexB
类型: System.Int32
strB 中子字符串的位置。
length
类型: System.Int32
要比较的子字符串中字符的最大数量。

返回值

类型: System.Int32
一个 32 位有符号整数,指示两个比较数之间的词法关系。

条件

小于零

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

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

大于零

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

异常条件
ArgumentOutOfRangeException

indexA 大于 strA.Length

- 或 -

indexB 大于 strB.Length

- 或 -

indexAindexBlength 为负。

- 或 -

indexAindexBnull,而 length 大于零。

strAstrB 中要比较的子字符串分别从 indexAindexB 开始。indexAindexB 都是从零开始的;也就是说,strAstrB 的第一个字符在位置 0,而不是位置 1。第一个子字符串的长度等于 strA 的长度减 indexA 加一。第二个子字符串的长度等于 strB 的长度减 indexB 加一。

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

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

警告说明警告:

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

使用字排序规则执行比较。有关字、字符串和顺序排序的更多信息,请参见 System.Globalization.CompareOptions

警告说明警告:

比较字符串时,您应该调用 Compare 方法,这需要您显式指定该方法使用的字符串比较的类型。

一个或者两个比较字都可以是 null。根据定义,任何字符串(包括空字符串 (""))的比较结果都大于 null 引用;两个 null 引用的比较结果为相等。

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

当比较受区域性特定的大小写规则影响时,可能会发生意外结果。例如,在土耳其语中,下面的示例将产生错误结果,因为土耳其语的文件系统不会对"file"中的字母"i"使用语义大小写规则。

使用序号比较比较路径名与“file”。执行此操作的正确代码如下:

下面的代码示例比较两个子字符串。


// Sample for String.Compare(String, Int32, String, Int32, Int32)
using System;

class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      //                 0123456
      String str1 = "machine";
      String str2 = "device";
      String str;
      int result;

      outputBlock.Text += "\n";
      outputBlock.Text += String.Format("str1 = '{0}', str2 = '{1}'", str1, str2) + "\n";
      result = String.Compare(str1, 2, str2, 0, 2);
      str = ((result < 0) ? "less than" : ((result > 0) ? "greater than" : "equal to"));
      outputBlock.Text += String.Format("Substring '{0}' in '{1}' is ", str1.Substring(2, 2), str1);
      outputBlock.Text += String.Format("{0} ", str);
      outputBlock.Text += String.Format("substring '{0}' in '{1}'.", str2.Substring(0, 2), str2) + "\n";
   }
}
/*
This example produces the following results:

str1 = 'machine', str2 = 'device'
Substring 'ch' in 'machine' is less than substring 'de' in 'device'.
*/


Windows Phone OS

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

Windows Phone

显示: