Compare 方法 (String, String, Boolean, CultureInfo)
此文章由机器翻译。 将光标移到文章的句子上,以查看原文。 更多信息。
译文
原文

String.Compare 方法 (String, String, Boolean, CultureInfo)

 

比较两个指定的 String 对象(其中忽略或考虑其大小写,并使用区域性特定的信息干预比较),并返回一个整数,指示二者在排序顺序中的相对位置。

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

public static int Compare(
	string strA,
	string strB,
	bool ignoreCase,
	CultureInfo culture
)

参数

strA

要比较的第一个字符串。

strB

要比较的第二个字符串。

ignoreCase

若要在比较过程中忽略大小写,则为 true;否则为 false

culture

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

返回值

Type: System.Int32

一个 32 位带符号整数,指示两个比较数之间的词法关系。

条件

小于零

strA 在排序顺序中位于 strB 之前。

strA 在相同的位置中出现 strB 的排序顺序。

大于零

strA 在排序顺序中位于 strB 之后。

Exception Condition
ArgumentNullException

culturenull

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

使用单词排序规则执行比较。有关 word、 字符串和顺序排序的详细信息,请参阅 System.Globalization.CompareOptions

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

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

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

static bool IsFileURI(String path)
{
    return (String.Compare(path, 0, "file:", 0, 5, true) == 0);
}

将"文件",然后使用序数比较到的路径名称进行比较。正确的代码以执行此操作是,如下所示:

static bool IsFileURI(String path)
{
    return (String.Compare(path, 0, "file:", 0, 5, StringComparison.OrdinalIgnoreCase) == 0);
}

对调用方的说明:

字符集包括可忽略字符。 Compare(String, String, Boolean, CultureInfo) 方法执行区分区域性的比较时不考虑这样的字符。例如,如果运行下面的代码 .NET Framework 4 或更高版本,"动物"与"Ani-恶意"(使用软连字符或 U + 00AD) 的不区分大小写比较使用固定区域性该值指示两个字符串是否相等。

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string s1 = "Ani\u00ADmal";
      string s2 = "animal";

      Console.WriteLine("Comparison of '{0}' and '{1}': {2}", 
                        s1, s2, String.Compare(s1, s2, true,
                        CultureInfo.InvariantCulture));
   }
}
// The example displays the following output:
//       Comparison of 'ani-mal' and 'animal': 0

若要识别可忽略字符在字符串比较,请调用 Compare 方法并提供其中任何一个值 CompareOptions.OrdinalCompareOptions.OrdinalIgnoreCaseoptions 参数。

下面的示例演示如何区域性可以影响比较。在捷克语-捷克共和国区域性"ch"是单个字符的最大"d"。但是,在英语-美国区域性"ch"是两个字符,并且"c"小于"d"。

using System;
using System.Globalization;

class Sample {
    public static void Main() {
    String str1 = "change";
    String str2 = "dollar";
    String relation = null;

    relation = symbol( String.Compare(str1, str2, false, new CultureInfo("en-US")) );
    Console.WriteLine("For en-US: {0} {1} {2}", str1, relation, str2);

    relation = symbol( String.Compare(str1, str2, false, new CultureInfo("cs-CZ")) );
    Console.WriteLine("For cs-CZ: {0} {1} {2}", str1, relation, str2);
    }

    private static String symbol(int r) {
    String s = "=";
    if      (r < 0) s = "<";
    else if (r > 0) s = ">";
    return s;
    }
}
/*
This example produces the following results.
For en-US: change < dollar
For cs-CZ: change > dollar
*/

.NET Framework
1.1 后可用
返回页首
显示:
© 2016 Microsoft