为什么ToUpper()在应用于"8"时不返回"*"?

new*_*d91 30 c#

string s = "h";
s = s.ToUpper();
Run Code Online (Sandbox Code Playgroud)

回报"H".

string s = "8";
s = s.ToUpper();
Run Code Online (Sandbox Code Playgroud)

回报 "8"

这不会回来"*"吗?

Bol*_*ock 93

不,它不应该.ToUpper()不代表WithShiftKeyOnAnInternationalASCIIKeyboard().没有大写8,因为8是数字,而不是字母.

当然,这是一个严重的过度简化(仅仅是一个数字并不会自动使字符集中的某个字符无用),但它很可能是你要求的,所以我会留下它.

  • 我一直想要这个功能 (34认同)
  • 我的键盘有一个(高于8:P (13认同)

Ode*_*ded 28

因为没有大写8.

仅仅因为你使用的特定键盘上有一个*与键相同的键8,并不意味着所有的键盘都可以.有些语言没有大写字母 - 应该ToUpper返回哪些?

String.ToUpper():

此方法使用当前区域性的大小写规则将当前实例中的每个字符转换为其大写等效项.如果一个字符没有大写等效字符,则它在返回的字符串中保持不变.


Sco*_*yre 6

真正的答案是因为与en-US的CultureInfo相关联的TextInfo没有将"*"定义为"8"的大写.

可以扩展TextInfo,覆盖toUpper(),并使其按您的意愿工作.