StringComparison枚舉

https://www.cnblogs.com/zhw511006/archive/2010/07/09/1774591.html
public enum StringComparison {
CurrentCulture,
CurrentCultureIgnoreCase,
InvariantCulture,
InvariantCultureIgnoreCase,
Ordinal,
OrdinalIgnoreCase
}

CurrentCulture 使用區域敏感排序規則和當前區域比較字符串。
CurrentCultureIgnoreCase 使用區域敏感排序規則、當前區域來比較字符串,同時忽略被比較字符串的大小寫。
InvariantCulture 使用區域敏感排序規則和固定區域比較字符串。
InvariantCultureIgnoreCase 使用區域敏感排序規則、固定區域來比較字符串,同時忽略被比較字符串的大小寫。
Ordinal 使用序號排序規則比較字符串。
OrdinalIgnoreCase 使用序號排序規則並忽略被比較字符串的大小寫,對字符串進行比較。

1.首先是StringComparison.Ordinal

在進行調用String.Compare(string1,string2,StringComparison.Ordinal)的時候是進行非語言(non-linguistic)上的比較,API運行時將會對兩個字符串進行byte級別的比較,因此這種比較是比較嚴格和準確的,並且在性能上也很好,一般通過StringComparison.Ordinal來進行比較比使用String.Compare(string1,string2)來比較要快10倍左右.(可以寫一個簡單的小程序驗證,這個挺讓我驚訝,因爲平時使用String.Compare從來就沒想過那麼多).StringComparison.OrdinalIgnoreCase就是忽略大小寫的比較,同樣是byte級別的比較.性能稍弱於StringComparison.Ordinal.

2.StringComparison.CurrentCulture

是在當前的區域信息下進行比較,這是String.Compare在沒有指定StringComparison的時候默認的比較方式.例子如下:

 Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); //當前的區域信息是美國
            string s1 = "visualstudio";
            string s2 = "windows";
            Console.WriteLine(String.Compare(s1, s2,StringComparison.CurrentCulture)); //輸出"-1"

            Thread.CurrentThread.CurrentCulture = new CultureInfo("sv-SE"); //當前的區域信息是瑞典
            Console.WriteLine(String.Compare(s1, s2,StringComparison.CurrentCulture)); //輸出"1"

StringComarison.CurrentCultureIgnoreCase指在當前區域信息下忽略大小寫的比較.

3.StringComarison.InvariantCulture

使用StringComarison.InvariantCulture來進行字符串比較,在任何系統中(不同的culture)比較都將得到相同的結果,他是使用CultureInfo.InvariantCulture的靜態成員CompareInfo來進行比較操作的.例子如下:

        Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); //當前的區域信息是美國
        string s1 = "visualstudio";
        string s2 = "windows";
        Console.WriteLine(String.Compare(s1, s2,StringComparison.InvariantCulture)); //輸出"-1"

        Thread.CurrentThread.CurrentCulture = new CultureInfo("sv-SE"); //當前的區域信息是瑞典
        Console.WriteLine(String.Compare(s1, s2,StringComparison.InvariantCulture)); //輸出"-1"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章