System.String.Compare 方法 (String, String, CultureInfo, CompareOptions)
方法描述
对两个指定的 String 对象进行比较,使用指定的比较选项和区域性特定的信息来影响比较,并返回一个整数,该整数指示这两个字符串在排序顺序中的关系。
语法定义(C# System.String.Compare 方法 (String, String, CultureInfo, CompareOptions) 的用法)
public static int Compare( string strA, string strB, CultureInfo culture, CompareOptions options )
参数/返回值
参数值/返回值 | 参数类型/返回类型 | 参数描述/返回描述 |
---|---|---|
strA | System-String | 要比较的第一个字符串。 |
strB | System-String | 要比较的第二个字符串。 |
culture | System-Globalization-CultureInfo | 提供区域性特定的比较信息的区域性。 |
options | System-Globalization-CompareOptions | 要在执行比较时使用的选项(如忽略大小写或符号)。 |
返回值 | System.Int32 | 一个 32 位带符号整数,该整数指示 strA 与 strB 之间的词法关系,如下表所示 值 Condition 小于零 strA 小于 strB。 零 strA 等于 strB。 大于零 strA 大于 strB。 |
提示和注释
此比较操作使用 culture 参数来获取区域性特定的信息,如大小写规则和各字符的字母顺序。 例如,特定的区域性可以指定:将某些字符组合视为单个字符,用特定方法比较大写和小写字符,或者字符的排序顺序取决于它前面或后面的字符。
警告
Compare(String, String, CultureInfo, CompareOptions) 方法主要用于排序或按字母顺序排列操作。 如果方法调用的主要目的在于确定两个字符串是否相等(即,方法调用的目的在于测试返回值是否为零),则不应使用此方法。 若要确定两个字符串是否相等,请调用 Equals 方法。
通过 options 参数可以进一步指定比较,该参数由 CompareOptions 枚举的一个或多个成员组成。 但是,由于此方法的目的在于执行区分区域性的字符串比较,因此 CompareOptions.Ordinal 和 CompareOptions.OrdinalIgnoreCase 值将不起作用。
两个比较数或其中任何一个都可以为 null。 根据定义,任何字符串(包括 String.Empty)都大于 null 引用,两个 null 引用相等。
当发现不相等或已经比较了两个字符串时,比较就会终止。 但是,如果两个字符串一直比较到其中一个字符串的末尾时仍相同,而另一个字符串仍有剩余字符,则认为仍有剩余字符的字符串较大。
System.String.Compare 方法 (String, String, CultureInfo, CompareOptions)例子
此示例还演示这三种比较方法生成三种不同结果的过程。
using System; using System.Globalization; public class Example { public static void Main() { string string1 = "brother"; string string2 = "Brother"; string relation; int result; // Cultural (linguistic) comparison. result = String.Compare(string1, string2, new CultureInfo("en-US"), CompareOptions.None); if (result > 0) relation = "comes after"; else if (result == 0) relation = "is the same as"; else relation = "comes before"; Console.WriteLine("'{0}' {1} '{2}'.", string1, relation, string2); // Cultural (linguistic) case-insensitive comparison. result = String.Compare(string1, string2, new CultureInfo("en-US"), CompareOptions.IgnoreCase); if (result > 0) relation = "comes after"; else if (result == 0) relation = "is the same as"; else relation = "comes before"; Console.WriteLine("'{0}' {1} '{2}'.", string1, relation, string2); // Culture-insensitive ordinal comparison. result = String.CompareOrdinal(string1, string2); if (result > 0) relation = "comes after"; else if (result == 0) relation = "is the same as"; else relation = "comes before"; Console.WriteLine("'{0}' {1} '{2}'.", string1, relation, string2); } } // The example produces the following output: // 'brother' comes before 'Brother'. // 'brother' is the same as 'Brother'. // 'brother' comes after 'Brother'.
异常
异常 | 异常描述 |
---|---|
ArgumentException | options 不是一个 CompareOptions 值。 |
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 系统要求。