То, что я думал, что будет доступно во время выполнения, выглядит примерно следующим образом:
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()));
Не так давно я создал небольшой скрипт, который делал то же самое. Несмотря на то, что я не могу поделиться своим кодом, я применил подход к тому, чтобы заставить мой код имитировать нажатие клавиши JS, что вызовет команду клавиши для открытия терминала ( Ctr + `) и работал. Надеюсь, это поможет.