匯出 (0) 列印
全部展開
本文章是由機器翻譯。 將指標移到文章內的文字上方即可查看原文。 其他資訊。
譯文
原文

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

使用指定的規則比較兩個指定之 String 物件的子字串,並傳回一個整數,表示兩者在排序順序中的相對位置。

命名空間:  System
組件:  mscorlib (在 mscorlib.dll 中)

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

參數

strA
類型:System.String
要用於比較中的第一個字串。
indexA
類型:System.Int32
strA 中子字串的位置。
strB
類型:System.String
要用於比較的第二個字串。
indexB
類型:System.Int32
strB 中子字串的位置。
length
類型:System.Int32
要比較的子字串最大字元數。
comparisonType
類型:System.StringComparison
其中一個列舉值,指定要用於比較的規則。

傳回值

類型:System.Int32
32 位元帶正負號的整數,表示兩個比較元之間的語彙關係。

條件

小於零

strA 參數中的子字串小於 strB 參數中的子字串。

Zero

子字串相等,或 length 參數為零。

大於零

strA 中的子字串大於 strB 中的子字串。

例外狀況條件
ArgumentOutOfRangeException

indexA 大於 strA.Length

-或-

indexB 大於 strB.Length

-或-

indexAindexBlength 為負值。

-或-

indexAindexBnull,而且 length 大於零。

ArgumentException

comparisonType 不是 StringComparison 值。

要比較的子字串從 strAindexA,以及 strBindexB 開始。 indexAindexB 的索引都是以零起始,意即,strA 中第一個字元,而且 strB 的位置為 0,而不是 1。 第一個子字串的長度等於 strA 減去 indexA 再加上 1 的長度。 第二個子字串的長度等於 strB 減去 indexB 再加上 1 的長度。

要比較的字元數是兩個子字串長度中比較少的和 length indexAindexBlength 參數必須是非負值。

comparisonType 參數指出比較作業是否應該使用目前的文化特性或不因文化特性而異、接受或忽略比較元的大小寫,或是使用字組 (區分文化特性) 或序數 (不區分文化特性) 的排序規則。

其中一個或兩個比較元都可以是 null 根據定義,任何包括空字串 ("") 在內的字串,都比 Null 參考大;而兩個 Null 參考則彼此相等。

當發現有不等或兩個子字串都比較過之後,比較則會結束。 然而,比較兩個字串時,如果比較至其中一個字串的結尾都是相等的,但另一個字串還有多餘的字元,那麼具有多餘字元的字串將會視為較大的字串。 傳回值是上次所執行之比較的結果。

當比較過程會受文化特性的特定大小寫規則影響時,即可能發生未預期的結果。 例如,就土耳其文而言,下列範例會產生錯誤結果;因為土耳其文的檔案系統對於 "file" 中的字母 "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, Int32, String, Int32, Int32, StringComparison) 方法不會考慮這些字元。 若要辨識以您的比較的可忽略的字元,請提供 StringComparison.OrdinalStringComparison.OrdinalIgnoreCase 的值給 comparisonType 參數。

下列範例會比較兩個子字串。


// 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'.
*/


.NET Framework

支援版本:4.5.2、4.5.1、4.5、4、3.5、3.0、2.0

.NET Framework Client Profile

支援版本:4、3.5 SP1

可攜式類別庫

支援版本:可攜式類別庫

適用於 Windows 市集應用程式的 .NET

支援版本:Windows 8

適用於 Windows Phone 應用程式的 .NET

支援版本:Windows Phone 8、Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (不支援伺服器核心角色), Windows Server 2008 R2 (SP1 (含) 以後版本支援伺服器核心角色,不支援 Itanium)

.NET Framework 並不支援各種平台的所有版本。如需支援版本的清單,請參閱.NET Framework 系統需求

社群新增項目

新增
顯示:
© 2014 Microsoft