首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C# 中字符串比較原理:基於 Unicode 代碼點逐字符比較

     編輯:程式設計疑難解答

比較機制

C# String.Compare 默認使用當前文化的排序規則,但本質上是按字符的 Unicode 代碼點(數值)逐個比較。

漢字編碼順序

  • 漢字在 Unicode 中按拼音首字母排序:同音字按聲調順序(ā á ǎ à)。
  • 例如:啊 (U+554A) 按 (U+6309) 奧 (U+5965) 昂 (U+6602),代碼點遞增。

示例分析

string S1 = "芸燁湘楓";
string S2 = "用一生下載你";
Console.WriteLine(String.Compare(S1, S2)); // 輸出 1,表示 S1 > S2

比較首字符:芸 (U+82B8) vs 用 (U+7528),0x82B8 > 0x7528,故 S1 > S2。

編碼澄清

  • C# 字符串內部為 UTF-16 編碼(每字符 2 或 4 字節)。
  • ASCII 僅涵蓋 0-127,漢字遠超此範圍,比較時實為 Unicode 代碼點比較。

自定義比較

若需按拼音、筆畫等規則排序,可使用 String.Compare(str1, str2, new CultureInfo("zh-CN"), CompareOptions.None) 或實現 IComparer<string>。

理解底層比較邏輯,有助於正確處理多語言排序需求。

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