C# 为什么';t ToUpper()返回*&引用;当应用于“时”;“8”字;?

C# 为什么';t ToUpper()返回*&引用;当应用于“时”;“8”字;?,c#,C#,返回“H” 返回“8” 这是否应该返回“*”?,因为没有大写字母8 仅仅因为您使用的特定键盘在与8相同的键上有一个*,并不意味着所有键盘都有。有些语言没有大写字母-对于这些语言,ToUpper应该返回什么 : 此方法使用当前区域性的大小写规则将当前实例中的每个字符转换为其大写等效字符。如果某个字符没有大写等效字符,则返回的字符串中会包含该字符,但不会改变 不,不应该ToUpper()并不意味着使用Shift键打开InternationalAscikeyBoard()。没有大写字母8,因为8是数字

返回
“H”

返回
“8”


这是否应该返回
“*”

,因为没有大写字母
8

仅仅因为您使用的特定键盘在与
8
相同的键上有一个
*
,并不意味着所有键盘都有。有些语言没有大写字母-对于这些语言,
ToUpper
应该返回什么

:

此方法使用当前区域性的大小写规则将当前实例中的每个字符转换为其大写等效字符。如果某个字符没有大写等效字符,则返回的字符串中会包含该字符,但不会改变


不,不应该
ToUpper()
并不意味着使用Shift键打开InternationalAscikeyBoard()。没有大写字母8,因为8是数字,不是字母


当然,这是一个严重的过度简化(仅仅是一个数字并不会自动使字符集中的某个字符无大小写),但这很可能是您所要求的,所以我就不谈了。

仅仅因为您按shift 8获得*并不会使其成为大写值,它只适用于a-z字符。

真正的答案是,与en-US的CultureInfo关联的TextInfo没有将“*”定义为“8”的大写字母

可以扩展该TextInfo,重写toUpper(),并让它按照您的意愿工作

  • 数字没有大写字母
  • 如果要将函数
    ToUpper()
    用于以下文本: “共有8栋建筑”
    你想要什么样的结果? “有8栋楼”或“有*栋楼”
  • 键盘布局是本地化的,例如,在德语键盘上,在8键处有一个

  • 我一直希望我的键盘有这样的功能(高于8:P@BlackBear:进一步证明奥德所说的:)你会认为没有大小写数字。但是(第2页)@Bolt Na…8仍然没有大写映射。它是大写字母,而不是键盘布局中字母顶部的任何内容。我喜欢在这个问题上的向上投票(这不是我的)。这是一个令人惊讶的愚蠢问题,但也是一个清晰且表达得很好的问题。这两个问题难得一见!请注意,打字机过去经常这样做——也就是说,点击“shift”和“8”将导致“*”。为什么这有18张赞成票?:可能是因为问题背后的纯真。。OP真的是一个新生事物。。它当然不仅仅适用于a-z。例如:
    Debug.WriteLine(“ελληνικά”。ToUpper());
    output的“Ε∧∧∧ΗΝ。它将根据当前区域性设置的规则转换为大写。该文本显示的是字符,而不是字母。
    ”ⅳ".ToUpper()
    正确地返回“Ⅳ”,如它应该返回的那样,等等?@tchrist-它确实返回了。我在LinqPad上测试了这个。得到了
    string s = "h";
    s = s.ToUpper();
    
    string s = "8";
    s = s.ToUpper();