助力快速理解 String 字符串比較函數的區別 爲初學者節省寶貴的時間,避免採坑! |
我們的初衷是將一種簡單的生活方式帶給世人 使有限時間 具備無限可能 |
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 )
本博客爲非營利性個人原創,除部分有明確署名的作品外,所刊登的所有作品的著作權均爲本人所擁有,本人保留所有法定權利。違者必究
對於需要複製、轉載、鏈接和傳播博客文章或內容的,請及時和本博主進行聯繫,留言,Email: [email protected]
對於經本博主明確授權和許可使用文章及內容的,使用時請註明文章或內容出處並註明網址