私は2つの文字を比較する正しい方法がすべての文化のために働く大文字小文字を無視しているのだろうかと思っています。また、大文字小文字を無視しないで2文字をテストする最良の方法はComparer<char>.Default
ですか?これはサロゲートペアでも機能しますか?大文字小文字を無視して大文字小文字を比較する正しい方法は何ですか?
EDIT:追加サンプル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