Я делаю сравнение результатов между .NET Core в Windows и в Linux (Ubuntu 18.04). В сравнении строк я вижу разные результаты. При выполнении следующего фрагмента кода я получаю 0
в Windows и -1
в Linux. Насколько я понимаю, этот код состоит в том, что символ ♪
следует игнорировать, а оставшаяся "Мэри" должна совпадать.
Я пытался использовать CurrentCulture
, InvariantCulture
, несколько CompareOptions
- все они возвращают -1 в Linux.
Проходя исходный код CompareInfo
здесь , он указывает на использование FindNLSStringEx
, которое, как я понимаю, Q / Invoke для ядра . Если это правда, как Linux обрабатывает этот код? Есть ли способ заставить Linux вернуть 0
сюда?
System.Globalization.CompareInfo info = System.Globalization.CultureInfo.CurrentCulture.CompareInfo;
int index = info.IndexOf("Mary", "♪Mary", System.Globalization.CompareOptions.IgnoreSymbols);
System.Console.WriteLine(index);