当前位置:  开发笔记 > 编程语言 > 正文

Char,Culture和IgnoreCase平等

如何解决《Char,Culture和IgnoreCase平等》经验,为你挑选了0个好方法。

我试图比较两个忽略这个案例的字符,并想出了以下令人不安的代码试图玩现在着名的土耳其我:

char lowerCase = '?'; // U+0131 
char upperCase = 'I'; // regular upper i

// Displays True comparing the chars
Trace.WriteLine(char.ToUpper(lowerCase, CultureInfo.CurrentCulture) == char.ToUpper(upperCase, CultureInfo.CurrentCulture));

// Displays False comparing the strings
Trace.WriteLine(lowerCase.ToString().Equals(upperCase.ToString(), StringComparison.CurrentCultureIgnoreCase));

这两件事情正在使用我的文化(法语)并且似乎做同样的事情,但结果不是我所期望的(无论是True还是两者都是假的).

使用土耳其文化时:

Thread.CurrentThread.CurrentCulture = new CultureInfo("tr-TR");

结果发生变化,两者都返回True.

我是否想念文化或字符/字符串比较?

编辑

读到这个问题,我现在明白两者是不同的.它与比较字符或字符串无关,而是处理自己的情况与否.我不明白的是他们为什么不同.是不是string.Equals与CurrentCultureIgnoreCase应该像我一样比较字符串的大写版本?我无法看到的场景背后是什么?

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有