1、使用默认ordinal比较
默认情况下,最常见的操作:
1) 字符串比较
2) 字符串等于
2) String.Equality和String.Inequality,即分别等于操作符==和!=。
执行区分大小写的字符比较,并在必要时使用当前的区域性。以下示例说明了这一点:
string root = @"C:\users"; string root2 = @"C:\Users"; bool result = root.Equals(root2); Console.WriteLine($"Ordinal comparison: <{root}> and <{root2}> are {(result ? "equal." : "not equal.")}"); result = root.Equals(root2, StringComparison.Ordinal); Console.WriteLine($"Ordinal comparison: <{root}> and <{root2}> are {(result ? "equal." : "not equal.")}"); Console.WriteLine($"Using == says that <{root}> and <{root2}> are {(root == root2 ? "equal" : "not equal")}");
在比较字符串时,默认的ordinal比较不考虑语言规则。它在两个字符串中比较每个Char对象的二进制值。因此,默认ordinal比较也区分大小写。
注意:使用String.Equals和==和!=运算符进行的相等性测试不同于使用String.CompareTo和Compare(String,String)方法进行的字符串比较。在相等性测试执行区分大小写的顺序比较时,比较方法使用当前区域性执行区分大小写,区域性区分的比较。因为默认的比较方法经常执行不同类型的比较,所以我们建议您始终通过调用一个显式指定要执行的比较类型的重载来使代码的意图明确。
2、不区分大小进行字符串比较
所述String.Equals(字符串,StringComparison)方法,可以指定一个StringComparison的值 StringComparison.OrdinalIgnoreCase 为不区分大小写的比较。如果为StringComparison参数指定StringComparison.OrdinalIgnoreCase值,则还有一个静态 String.Compare(String,String,StringComparison)方法将执行不区分大小写的序数比较。以下示例代码:
string root = @"C:\users"; string root2 = @"C:\Users"; bool result = root.Equals(root2, StringComparison.OrdinalIgnoreCase); bool areEqual = String.Equals(root, root2, StringComparison.OrdinalIgnoreCase); int comparison = String.Compare(root, root2, comparisonType: StringComparison.OrdinalIgnoreCase); Console.WriteLine($"Ordinal ignore case: <{root}> and <{root2}> are {(result ? "equal." : "not equal.")}"); Console.WriteLine($"Ordinal static ignore case: <{root}> and <{root2}> are {(areEqual ? "equal." : "not equal.")}"); if (comparison < 0) Console.WriteLine($"<{root}> is less than <{root2}>"); else if (comparison > 0) Console.WriteLine($"<{root}> is greater than <{root2}>"); else Console.WriteLine($"<{root}> and <{root2}> are equivalent in order");
相关文档:https://docs.microsoft.com/en-us/dotnet/csharp/how-to/compare-strings