我有一些像这样的代码:
If key.Equals("search", StringComparison.OrdinalIgnoreCase) Then
DoSomething()
End If
Run Code Online (Sandbox Code Playgroud)
我不关心这个案子.我应该使用OrdinalIgnoreCase,InvariantCultureIgnoreCase或CurrentCultureIgnoreCase?
我想知道比较两个字符的正确方法是什么,而忽略了适用于所有文化的案例.另外,Comparer<char>.Default在不忽略大小写的情况下测试两个字符的最佳方法是什么?这对代理对有用吗?
编辑:添加了示例IComparer<char>实现
如果这有助于任何人这是我决定使用的
public class CaseInsensitiveCharComparer : IComparer<char> {
private readonly System.Globalization.CultureInfo ci;
public CaseInsensitiveCharComparer(System.Globalization.CultureInfo ci) {
this.ci = ci;
}
public CaseInsensitiveCharComparer()
: this(System.Globalization.CultureInfo.CurrentCulture) { }
public int Compare(char x, char y) {
return Char.ToUpper(x, ci) - Char.ToUpper(y, ci);
}
}
// Prints 3
Console.WriteLine("This is a test".CountChars('t', new CaseInsensitiveCharComparer()));
Run Code Online (Sandbox Code Playgroud)