zoukankan      html  css  js  c++  java
  • .net 的StringComparison

    namespace System
    {
    public enum StringComparison {
    CurrentCulture,
    CurrentCultureIgnoreCase,
    InvariantCulture,
    InvariantCultureIgnoreCase,
    ordinal,
    ordinalIgnoreCase
    }
    }

    可能大家平时在进行字符串比较的时候根本没有考虑那么多,"= =","Eaqual()"用得不亦乐乎,其实这里面的东西也挺多,性能,区域信息等
    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"

    在一般情况下,某事物个体发生具有其特有属性的负面现象,且无法以科学的角度得到合理有效的解释。我们通常称此类现象为“人品问题”(RPWT)。
                                                   ——摘自《辞海》第314页

  • 相关阅读:
    CS229 6.4 Neurons Networks Autoencoders and Sparsity
    CS229 6.3 Neurons Networks Gradient Checking
    【Leetcode】【Easy】Min Stack
    【Leetcode】【Easy】Merge Sorted Array
    【Leetcode】【Easy】ZigZag Conversion
    【Leetcode】【Easy】Valid Palindrome
    【Leetcode】【Easy】Reverse Integer
    【Leetcode】【Easy】Palindrome Number
    【Leetcode】【Easy】Length of Last Word
    【Leetcode】【Easy】Remove Nth Node From End of List
  • 原文地址:https://www.cnblogs.com/dflower/p/1690961.html
Copyright © 2011-2022 走看看