C# toUpper 用于不带大写的语言

2024-04-15

使用时String.toUpper() https://msdn.microsoft.com/en-us/library/system.string.toupper(v=vs.110).aspx在尝试“格式化”不包含大写字符(例如阿拉伯语)的语言时,是否必须采取任何其他预防措施?

string arabic = "مرحبا بالعالم";
string upper= arabic.ToUpper();

侧边栏:从不打电话.ToUpper() or .ToLower()当本地化很重要时,因为这些方法不接受显式的IFormatProvider这使您(关于本地化)的意图变得清晰。你应该更喜欢CultureInfo.TextInfo.ToUpperCase反而。

但要回答你的问题:大小写转换不会影响不受大小写限制的字符,它们会保持原样。这也发生在en-US和其他拉丁字母语言,因为字符如数字0, 1, 2等也没有大小写 - 所以你的阿拉伯字符将按原样保留。

请注意非字母字符和已经大写的字符是如何被忽略的:

"abcDEF1234!@#" -> "ABCDEF1234!@#"

另一件需要注意的事情是,某些语言的字符在小写和大写形式之间没有一对一的映射,即土耳其语 I,如下所示:https://haacked.com/archive/2012/07/05/turkish-i-problem-and-why-you-should-care.aspx/ https://haacked.com/archive/2012/07/05/turkish-i-problem-and-why-you-should-care.aspx/(这就是为什么如果你使用过,FxCop 会对你大喊大叫ToLower代替ToUpper,以及为什么你应该使用StringComparison.OrdinalIgnoreCase or CurrentCultureIgnoreCase永不str1.ToLower() == str2.ToLower()用于不区分大小写的字符串比较。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# toUpper 用于不带大写的语言 的相关文章

随机推荐