C#toUpper表示不带大写字母的语言

C#toUpper表示不带大写字母的语言,c#,C#,使用时,在尝试“格式化”不包含大写字符(如阿拉伯语)的语言时,是否必须采取任何其他预防措施 string arabic = "مرحبا بالعالم"; string upper= arabic.ToUpper(); 侧边栏:当本地化很重要时,千万不要调用.ToUpper()或.ToLower(),因为这些方法不接受明确的IFormatProvider,无法明确说明您的意图(关于本地化)。您应该更喜欢CultureInfo.TextInfo.ToUpperCase 但要回答您的问题:大小写

使用时,在尝试“格式化”不包含大写字符(如阿拉伯语)的语言时,是否必须采取任何其他预防措施

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

侧边栏:当本地化很重要时,千万不要调用
.ToUpper()
.ToLower()
,因为这些方法不接受明确的
IFormatProvider
,无法明确说明您的意图(关于本地化)。您应该更喜欢
CultureInfo.TextInfo.ToUpperCase

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

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

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

另一件需要注意的事情是,一些语言的字符在小写和大写形式之间没有一对一的映射,即Turkish I,写在这里:(这就是为什么如果你使用
ToLower
而不是
ToUpper
,FxCop会对你大喊大叫的原因,也是为什么你应该使用
StringComparison.ordinallingorecase
CurrentCultureIgnoreCase
而从不
str1.ToLower()==str2.ToLower()
用于不区分大小写的字符串比较。

非常有趣,谢谢。关于土耳其的链接我不知道,因此特别有价值!