string.Compare字符串比較函數中文詳解以及與Equal、==的區別

Chinar blog www.chinar.xin

String 比較函數詳解


本文提供全流程,中文翻譯

助力快速理解 String 字符串比較函數的區別

爲初學者節省寶貴的時間,避免採坑!

Chinar —— 心分享、心創新!

我們的初衷是將一種簡單的生活方式帶給世人

使有限時間 具備無限可能

Chinar 教程效果:



全文高清圖片,點擊即可放大觀看 (很多人竟然不知道)


1 Intro —— 簡介


有許多初學者,對於 String 類提供的幾個比較函數都算會用。

但編程,我們不能知其然不知其所以然,這種學習態度會導致我們在細節上的把控不到位,從而生產出來的代碼就可能不安全,或是效率不高。

今天我來爲大家詳細的介紹一下,C#提供的這幾個比較之間的不同。


2 Compare ―― 比較

string.Compare

//返回值:
// 1:大於
// 0:等於
//-1:小於
static void Main(string[] args)
{
    string 變量1 = "abc";
    string 變量2 = "ABC";
    int 返回值1 = string.Compare(變量1, 變量2, true);                     //忽略大小寫
    int 返回值2 = string.Compare(變量1, 變量2, StringComparison.Ordinal); //序號(二進制)排序規則 
    Console.WriteLine(返回值1);                                       // 0 相同
    Console.WriteLine(返回值2);                                       // 32 返回兩者相對位置
    Console.ReadLine();
}

比較字符串是按照字符串中的字符一個個比較,只要一個字符不相同,那麼就停止比較得出結果。
而字符的比較則是比較其Unicode值,而非ASCII碼值,因爲ASCII是不可能容納下全世界這麼多種語言這麼多字符。
string是微軟封裝的一個字符串類,在內部他已經對 = = 操作符進行了重寫。重寫後他比較的則是兩個變量的內容是否相同,重寫後的 =
= 操作符內部調用的即是 equals 方法,所以輸出的是true

重載中可忽略大小寫

也可根據國家語言進行區分

還可根據上邊說的 unicode 編碼序號,將以二進制的規則進行對比,提升效率。

只需要傳入不同枚舉類型,即可

  摘要: 使用當前所屬地區(國家語言)排序規則比較字符串。
 CurrentCulture = 0,
 
 
 摘要: 使用當前所屬地區(國家語言)排序規則比較字符串。並忽略大小寫,來比較字符串。
 CurrentCultureIgnoreCase = 1,
 
  
 摘要: 使用固定區域性(固定區域只與英語關聯,與其他語言都不關聯)比較字符串。
 InvariantCulture = 2,
 
 
 摘要: 通過使用區分區域性的排序規則、固定區域性,並忽略所比較的字符串的大小寫,來比較字符串。
 InvariantCultureIgnoreCase = 3,
 
 
 摘要: 使用序號(二進制)排序規則比較字符串。 
 Ordinal = 4,
 
摘要:   使用序號(二進制)排序且忽略大小寫,比較字符串。 性能略低於 Ordinal
OrdinalIgnoreCase = 5

Equals方法用於方便地判定兩個字符串是否相同,有兩種重載形式:

public boolEquals(string)

public static boolEquals(string,string)


3 Compare ―― 比較

Equals 方法用於方便地判定兩個字符串是否相同,有兩種重載形式:

public boolEquals(string)

public static boolEquals(string,string)

因其屬於 Object 類,所以可對任何類進行重寫 Equals 函數,而使其具備對比性質。


支持

May Be —— 開發者,總有一天要做的事!


擁有自己的服務器,無需再找攻略

Chinar 提供一站式《零》基礎教程

使有限時間 具備無限可能!

先點擊領取 —— 阿里全產品優惠券 (享受最低優惠)


Chinar 免費服務器、建站教程全攻略!( Chinar Blog )


Chinar

END

本博客爲非營利性個人原創,除部分有明確署名的作品外,所刊登的所有作品的著作權均爲本人所擁有,本人保留所有法定權利。違者必究

對於需要複製、轉載、鏈接和傳播博客文章或內容的,請及時和本博主進行聯繫,留言,Email: [email protected]

對於經本博主明確授權和許可使用文章及內容的,使用時請註明文章或內容出處並註明網址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章