我想知道什么是正确的方式来比较两个字符忽略案件,将适用于所有文化。另外,Comparer<char>.Default
是测试两个字符而不忽略大小写的最佳方法吗?这是否适用于代理对?比较char忽略大小写的正确方法是什么?
编辑:新增样本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()));
ToUpper的可炭转换为正确的上壳体相对于所述当前培养,但返回的词汇顺序不正确。可能这只在.NET中支持字符串比较。 – Holstebroe 2013-11-20 14:44:01