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()
用于不区分大小写的字符串比较。非常有趣,谢谢。关于土耳其的链接我不知道,因此特别有价值!