資訊
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, CultureInfo, CompareOptions)

比較兩個指定的 String 物件的子字串,使用指定的比較選項及文化特性特定資訊影響比較,然後傳回整數,這個整數表示這兩個子字串在排序次序中彼此的關聯性。

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

public static int Compare(
	string strA,
	int indexA,
	string strB,
	int indexB,
	int length,
	CultureInfo culture,
	CompareOptions options
)

參數

strA
類型:System.String
要用於比較中的第一個字串。
indexA
類型:System.Int32
strA 中子字串的開始位置。
strB
類型:System.String
要用於比較的第二個字串。
indexB
類型:System.Int32
strB 中子字串的開始位置。
length
類型:System.Int32
要比較的子字串最大字元數。
culture
類型:System.Globalization.CultureInfo
物件,提供文件特性的比較資訊。
options
類型:System.Globalization.CompareOptions
執行比較時要使用的選項 (例如忽略大小寫或符號)。

傳回值

類型:System.Int32
整數,這個整數表示兩個子字串之間的語彙關係,如下表所示。

條件

小於零

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

Zero

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

大於零

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

例外狀況條件
ArgumentException

options 不是 CompareOptions 值。

ArgumentOutOfRangeException

indexA 大於 strA.Length

-或-

indexB 大於 strB.Length

-或-

indexAindexBlength 為負值。

-或-

strAstrBnull,而且 length 大於零。

ArgumentNullException

culturenull

要比較的子字串,從位於 indexAstrA 和位於 indexBstrB 開始。 第一個子字串的長度為 strA 減去 indexA 的長度。 第二個子字串的長度是 strB 的長度減去 indexB

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

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

注意事項警告

Compare(String, Int32, String, Int32, Int32, CultureInfo, CompareOptions) 方法主要設計用於排序或依字母順序排序作業。 當方法呼叫的主要目的是判斷兩個子字串是否相同時 (亦即,方法呼叫的目的是測試傳回值零時),不可以使用這個方法。 若要判斷兩個字串是否相同,請呼叫 Equals 方法。

strAstrB 其中之一或兩者都可以是 null 根據定義,任何字串 (包括 String.Empty) 都比 null 參考大,而兩個 null 參考則彼此相等。

比較可以進一步透過 options 參數來指定,這個參數是由一個或多個 System.Globalization.CompareOptions 列舉型別成員組成。 不過,由於這個方法的目的是處理區分文化特性的字串比較,因此 CompareOptions.OrdinalCompareOptions.OrdinalIgnoreCase 值沒有任何作用。

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

呼叫者注意事項

字元集包含可忽略的字元。 當它執行語言或文化特性的比較時, Compare(String, Int32, String, Int32, Int32, CultureInfo, CompareOptions) 方法不會考慮這些字元。 若要辨識以您的比較的可忽略的字元,請提供 CompareOptions.OrdinalCompareOptions.OrdinalIgnoreCase 的值給 options 參數。

下列範例使用 Compare(String, Int32, String, Int32, Int32, CultureInfo, CompareOptions) 方法比較兩個人的姓氏。 然後,會以字母順序列出。


using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string name1 = "Jack Smith";
      string name2 = "John Doe";

      // Get position of space character.
      int index1 = name1.IndexOf(" ");
      index1 = index1 < 0 ? 0 : index1--;

      int index2 = name2.IndexOf(" ");
      index1 = index1 < 0 ? 0 : index1--;

      int length = Math.Max(name1.Length, name2.Length);

      Console.WriteLine("Sorted alphabetically by last name:");
      if (String.Compare(name1, index1, name2, index2, length, 
                         new CultureInfo("en-US"), CompareOptions.IgnoreCase) < 0)
         Console.WriteLine("{0}\n{1}", name1, name2); 
      else
         Console.WriteLine("{0}\n{1}", name2, name1); 
   }
}
// The example displays the following output:
//       Sorted alphabetically by last name:
//       John Doe
//       Jack Smith


.NET Framework

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

.NET Framework Client Profile

支援版本:4、3.5 SP1

適用於 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