uppercase/lowercase StringComparer.OrdinalIgnoreCase 的转换方法在哪里?

Where is uppercase/lowercase conversion method for StringComparer.OrdinalIgnoreCase?

在下面的简单方法中,对于字符串比较器,我调用了相应的 ToLower() 方法。 StringComparer.OrdinalIgnoreCase是否在框架某处公开了大小写转换方法?

Function ToLowerIfCaseInsensitiveComparison(s As String, cmp As StringComparison) As String
    Select Case cmp
        Case StringComparison.CurrentCultureIgnoreCase
            Return s.ToLower()
        Case StringComparison.InvariantCultureIgnoreCase
            Return s.ToLowerInvariant()
        Case StringComparison.OrdinalIgnoreCase
            Return ___________________ ' expecting your answers
        Case Else
            Return s
    End Select
End Function

(C# 或 VB – 无论您喜欢什么。答案可能无论如何都不会依赖于语言。)


更新:关于小写转换我必须纠正自己:Best Practices for Using Strings in the .NET Framework

Use the String.ToUpperInvariant method instead of the String.ToLowerInvariant method when you normalize strings for comparison.

StringComparison.OrdinalIgnoreCase 可用作 string.Equals 的参数,为了节省您必须使用 ToLower 删除比较中的区分大小写。

在 C# 中:

var string1 = "Hello";
var string2 = "hello";

Console.WriteLine(string1.Equals(string2, StringComparison.OrdinalIgnoreCase));

// Output: true

Ordinal 比较基于字符串中每个 Char 的数值(Unicode 代码点)。 如果你想 return 字符串以一种格式进行序号比较,你可以使用这个方法:

string GetUnicodeString(string s)
{
    StringBuilder sb = new StringBuilder();
    foreach (char c in s)
    {
        sb.Append("\u");
        sb.Append(String.Format("{0:x4}", (int)c));
    }
    return sb.ToString();
}