本文由机器翻译。若要查看英语原文,请勾选“英语”复选框。 也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

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

 

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

命名空间:   System
程序集:  mscorlib(位于 mscorlib.dll)

public static int Compare(
	string strA,
	int indexA,
	string strB,
	int indexB,
	int length,
	CultureInfo culture,
	CompareOptions options
)

参数

strA
Type: System.String

要在比较中使用的第一个字符串。

indexA
Type: System.Int32

strA 中子字符串开始的位置。

strB
Type: System.String

要在比较中使用的第二个字符串。

indexB
Type: System.Int32

strB 中子字符串开始的位置。

length
Type: System.Int32

要比较的子字符串中字符的最大数量。

culture
Type: System.Globalization.CultureInfo

一个对象,提供区域性特定的比较信息。

options
Type: System.Globalization.CompareOptions

要在执行比较时使用的选项(如忽略大小写或符号)。

返回值

Type: System.Int32

一个整数,该整数用于指示两个子字符串之间的词法关系,如下表所示。

Value

条件

小于零

strA 中的子字符串在排序顺序中位于 strB 中的子字符串之前。

子字符串在排序顺序中出现的位置相同或 length 为零。

大于零

strA 中的子字符串在排序顺序中位于 strB 中的子字符串之后。

Exception Condition
ArgumentException

options 不是 CompareOptions 值。

ArgumentOutOfRangeException

indexA 大于 strA.Length

- 或 -

indexB 大于 strB.Length

- 或 -

indexAindexBlength 为负数。

- 或 -

strAstrBnull,并且 length 大于零。

ArgumentNullException

culturenull

要比较的子字符串开始strA位于indexA并在strB位于indexB 第一个子字符串的长度是长度strAindexA 第二个子字符串的长度是长度strBindexB

要比较的字符数是长度为两个子字符串的较小者和length indexAindexB,和length参数必须为非负数。

该比较使用culture参数来获取特定于区域性的信息,如大小写规则和每个字符的字母顺序。 例如,特定区域性可以指定单个字符视为某些字符的组合,大写和小写字符进行比较以特定方式进行,或一个字符的排序顺序依赖于前面或后面的字符。

System_CAPS_caution小心

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

一个或两个strAstrB可以是null 根据定义,任意字符串,包括String.Empty,比较结果大于空引用,且两个 null 引用比较结果为彼此相等。

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

比较终止时发现不相等或已经比较了两个子字符串。 但是,如果两个字符串的比较结果相等到一个字符串的末尾,并且另一个字符串包含剩余的字符,则认为较大与其余的字符的字符串。 返回值是执行的最后一个比较的结果。

调用函数说明:

字符集包括可忽略字符。 Compare(String, Int32, String, Int32, Int32, CultureInfo, CompareOptions)方法执行语言性的或区分区域性的比较时不考虑这些字符。 若要识别在您比较可忽略字符,提供的值CompareOptions.OrdinalCompareOptions.OrdinalIgnoreCaseoptions参数。

下面的示例使用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

.NET Framework
自 2.0 起可用
Silverlight
自 2.0 起可用
Windows Phone Silverlight
自 7.0 起可用
返回页首
显示: