Подтвердить что ты не робот

String.Equals GID возвращает false?

У меня есть следующий код С# в моем приложении ASP.NET MVC. Я пытаюсь сравнить 2 string с помощью метода Equals, с culture = "vi". Мой код ниже:

string culture = "vi";

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo(culture);
System.Threading.Thread.CurrentThread.CurrentUICulture = 
  System.Threading.Thread.CurrentThread.CurrentCulture;

var CCC = string.Equals("CategId", "CATEGID", StringComparison.CurrentCultureIgnoreCase);
var xx = string.Equals("TestGID", "TestGID", StringComparison.CurrentCultureIgnoreCase);
var zz = string.Equals("id", "ID", StringComparison.CurrentCultureIgnoreCase);

Результаты:

CCC = false;

xx = true;

zz = true;

Я не знаю, почему CCC есть false. Что-то не так? Если я установил culture = id, ko, en и т.д., Тогда CCC = true. Кто может мне помочь?

4b9b3361

Ответ 1

Это значение gI, которое не равно gI в случае вьетнамского языка. gI (gI) является слогом-начальным, вид одной буквы, а gI - две отдельные буквы. Другие пары

cH != CH
kH != KH
nG != NG
nH != NH
pH != PH
qU != QU
tH != TH
tR != TR

https://en.wikipedia.org/wiki/Vietnamese_language

Ответ 2

Вы можете попробовать

string culture = "vi";

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo(culture);

System.Threading.Thread.CurrentThread.CurrentUICulture = 
  System.Threading.Thread.CurrentThread.CurrentCulture;

var CCC = string.Equals("CategId", "CATEGID", StringComparison.InvariantCultureIgnoreCase);
var CCC1 = string.Equals("CategId", "CATEGID", StringComparison.CurrentCultureIgnoreCase);

В этом CCC вернется true, но CCC1 вернет false из-за Culture. согласно вашей культуре GID и GID отличается.