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 系统要求。