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

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

 

比较两个指定的 String 对象的子字符串,并返回一个指示二者在排序顺序中的相对位置的整数。

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

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

参数

strA
Type: System.String

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

indexA
Type: System.Int32

strA 中子字符串的位置。

strB
Type: System.String

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

indexB
Type: System.Int32

strB 中子字符串的位置。

length
Type: System.Int32

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

返回值

Type: System.Int32

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

条件

小于零

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

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

大于零

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

Exception Condition
ArgumentOutOfRangeException

indexA 大于 strA.Length

- 或 -

indexB 大于 strB.Length

- 或 -

indexAindexBlength 为负数。

- 或 -

indexAindexBnull,并且 length 大于零。

要比较的子字符串开始strAindexA并在strBindexB 同时indexAindexB是否从零开始; 即中的第一个字符strAstrB位置为零。 第一个子字符串的长度等于的长度strAindexA加一。 第二个子字符串的长度等于的长度strBindexB加一。

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

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

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

System_CAPS_warning警告

比较字符串时,应调用Compare(String, Int32, String, Int32, Int32, StringComparison)方法,要求你显式指定该方法使用的字符串比较的类型。 有关详细信息,请参阅在 .NET Framework 中使用字符串的最佳做法

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

比较终止时发现不相等或已经比较了两个子字符串。 但是,如果两个字符串比较结果为一个字符串的末尾相等且另一个字符串包含剩余的字符,然后与其余字符的字符串被视为更高版本。 返回值是执行的最后一个比较的结果。

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

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

比较路径名称为"file"使用序号比较。 正确的代码以执行此操作是,如下所示︰

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

调用函数说明:

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

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

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

class Sample {
    public static void Main() {
//                 0123456
    String str1 = "machine";
    String str2 = "device";
    String str;
    int result;

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

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

通用 Windows 平台
自 8 起可用
.NET Framework
自 1.1 起可用
可移植类库
可移植 .NET 平台 中受支持
Silverlight
自 2.0 起可用
Windows Phone Silverlight
自 7.0 起可用
Windows Phone
自 8.1 起可用
返回页首
显示: