本文章是由機器翻譯。 將指標移到文章內的文字上方即可查看原文。 其他資訊。
譯文
原文
資訊
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

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

比較兩個指定之 String 物件的子字串,忽略或區分兩者的大小寫,並使用文化特性資訊來影響比較,然後傳回一個整數,表示兩者在排序順序中的相對位置。

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

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

參數

strA
類型:System.String
要用於比較中的第一個字串。
indexA
類型:System.Int32
strA 中子字串的位置。
strB
類型:System.String
要用於比較的第二個字串。
indexB
類型:System.Int32
strB 中子字串的位置。
length
類型:System.Int32
要比較的子字串最大字元數。
ignoreCase
類型:System.Boolean
若要在比較時忽略大小寫,則為 true,否則為 false
culture
類型:System.Globalization.CultureInfo
物件,提供文件特性的比較資訊。

傳回值

類型:System.Int32
整數,表示兩個比較元 (Comparand) 之間的語彙關係。

條件

小於零

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

Zero

子字串相等,或者 length 為零。

大於零

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

例外狀況條件
ArgumentOutOfRangeException

indexA 大於 strA.Length

-或-

indexB 大於 strB.Length

-或-

indexAindexBlength 為負值。

-或-

strAstrBnull,而且 length 大於零。

ArgumentNullException

culturenull

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

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

比較會使用 culture 參數以取得與文化特性相關的資訊,例如大小寫規則和個別字元的字母順序。 例如,文化特性可能會指定字元的特定組合需視為單一字元、大寫及小寫字元要以特定方式加以比較,或者排序順序要根據其前後的字元等。

比較過程會使用字組排序規則執行。 如需字組、字串和序數排序的詳細資訊,請參閱 System.Globalization.CompareOptions

其中一個或兩個比較元都可以是 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, Boolean, CultureInfo) 方法不會考慮這些字元。 若要辨識以您的比較的可忽略的字元,請呼叫 Compare(String, Int32, String, Int32, Int32, CultureInfo, CompareOptions) 方法並提供 CompareOptions.OrdinalCompareOptions.OrdinalIgnoreCase 的值給 options 參數。

下列範例會使用不同的文化特性及忽略子字串大小寫,以執行兩個子字串的比較。 文化特性的選擇將會影響比較字母 "I" 的方式。


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

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

    Console.WriteLine();
    Console.WriteLine("str1 = '{0}', str2 = '{1}'", str1, str2);
    Console.WriteLine("Ignore case, Turkish culture:");
    result = String.Compare(str1, 4, str2, 4, 2, true, new CultureInfo("tr-TR"));
    str = ((result < 0) ? "less than" : ((result > 0) ? "greater than" : "equal to"));
    Console.Write("Substring '{0}' in '{1}' is ", str1.Substring(4, 2), str1);
    Console.Write("{0} ", str);
    Console.WriteLine("substring '{0}' in '{1}'.", str2.Substring(4, 2), str2);

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

str1 = 'MACHINE', str2 = 'machine'
Ignore case, Turkish culture:
Substring 'IN' in 'MACHINE' is less than substring 'in' in 'machine'.

Ignore case, invariant culture:
Substring 'IN' in 'MACHINE' is equal to substring 'in' in 'machine'.
*/


.NET Framework

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

.NET Framework Client Profile

支援版本:4、3.5 SP1

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 系統需求

社群新增項目

顯示:
© 2015 Microsoft