首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# String.Compare 與 CompareTo 完整用法指南

     編輯:關於C#

前言:字串比較的標準工具

String.Compare 與 String.CompareTo 是 C# 進行字串排序比較的核心方法。本文透過範例系統說明其回傳值語義、多載用法與最佳實踐。

核心回傳值語義

回傳值含義
< 0第一個字串排序在第二個字串之前(較小)
= 0兩字串相等
> 0第一個字串排序在第二個字串之後(較大)

基本範例

string s = "abc";

Console.WriteLine(String.Compare("abc", "abc")); // 0
Console.WriteLine(String.Compare("abc", "ab"));  // 1  ("abc" > "ab")
Console.WriteLine(String.Compare("abc", "a"));   // 1
Console.WriteLine(String.Compare("abc", "b"));   // -1 ("abc" < "b")

// 實例方法 CompareTo
Console.WriteLine(s.CompareTo("abc")); // 0
Console.WriteLine(s.CompareTo("ab"));  // 1
Console.WriteLine(s.CompareTo("a"));   // 1
Console.WriteLine(s.CompareTo("b"));   // -1

關鍵多載與進階用法

1. 忽略大小寫比較

String.Compare("ABC", "abc", true)   // 0 (忽略大小寫)
String.Compare("ABC", "abc", false)  // 非 0 (區分大小寫)

// 等價於
String.Compare("ABC".ToUpper(), "abc".ToUpper()) // 0

2. 文化特性比較

using System.Globalization;

var ci = CultureInfo.GetCultureInfo("tr-TR"); // 土耳其語:i/İ 不同
String.Compare("I", "i", false, ci); // 非 0 (土耳其語區分)
String.Compare("I", "i", true, ci);  // 0 (忽略大小寫)

3. 字串比較選項

String.Compare(strA, strB, StringComparison.Ordinal);           // 二進位比較(快、區分大小寫)
String.Compare(strA, strB, StringComparison.OrdinalIgnoreCase); // 二進位忽略大小寫
String.Compare(strA, strB, StringComparison.CurrentCulture);    // 當前文化特性排序規則
String.Compare(strA, strB, StringComparison.InvariantCulture);  // 不變文化特性(持久化資料推薦)

4. 部分比較

String.Compare("abcdef", 0, "abcxyz", 0, 3); // 0 (比較前 3 字元)
String.Compare("abcdef", 2, "xyz", 0, 3);    // 比較 "cde" vs "xyz"

CompareTo vs Compare

特性CompareToString.Compare
型別實例方法靜態方法
Null 處理this 為 null 拋例外;參數 null 視為較小雙 null 相等;單 null 視為較小
功能豐富度基礎支援文化特性、選項、部分比較
介面實作實作 IComparable<T>獨立靜態方法

最佳實踐建議

  1. 排序/持久化:使用 StringComparison.Ordinal 或 InvariantCulture,避免文化特性導致結果不一致。
  2. 使用者顯示排序:使用 CurrentCulture 或 CurrentCultureIgnoreCase。
  3. 效能敏感:Ordinal 最快(直接比較二進位),避免 ToUpper() 配置新字串。
  4. Null 安全:靜態 String.Compare 處理 null 更安全,優先選用。

總結

String.Compare 是功能完整的字串比較瑞士刀,支援文化特性、大小寫選項、部分比較;CompareTo 適合實作 IComparable 介面的簡單排序。明確指定 StringComparison 列舉是現代 C# 避免微妙 Bug 的關鍵習慣。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved