Почему CompareInfo.IndexOf () не игнорирует символы в этом коде? - PullRequest
3 голосов
/ 08 мая 2019

Я делаю сравнение результатов между .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);
...