30 votes

Pourquoi ToUpper () ne retourne pas "*" lorsqu'il est appliqué à "8"?

 string s = "h";
s = s.ToUpper();
 

renvoie "H" .

 string s = "8";
s = s.ToUpper();
 

renvoie "8"

Cela ne devrait-il pas renvoyer "*" ?

93voto

BoltClock Points 249668

Non, ça ne devrait pas. ToUpper() ne signifie pas WithShiftKeyOnAnInternationalASCIIKeyboard() . Il n'y a pas de 8 majuscules, car 8 est un chiffre , pas une lettre .

Bien sûr, cela est une simplification grossière (étant un nombre seul ne fait pas automatiquement un certain caractère dans un jeu de caractères sans étui), mais il est probable que vous demandez de toute façon , donc je vais le laisser là.

28voto

Oded Points 271275

Car il n'y a pas de majuscules 8.

Tout simplement parce que le clavier spécifiques que vous utilisez a un * sur la même touche que l' 8, ne veut pas dire que tous les claviers ne. Certaines langues n'ont pas de majuscules lettre - que dois - ToUpper de retour pour ceux?

String.ToUpper():

Cette méthode utilise les règles de casse de la culture actuelle de convertir chaque caractère dans l'instance actuelle de son équivalent en majuscule. Si un personnage n'a pas un équivalent en majuscule, il est inclus inchangé dans la chaîne renvoyée.

6voto

smackfu Points 573

La vraie réponse est que le TextInfo associé au CultureInfo pour en-US ne définit pas "*" comme la majuscule de "8".

Il peut être possible d'étendre cette TextInfo, de remplacer toUpper () et de le faire fonctionner comme vous le souhaitez.

1voto

Vloxxity Points 709
  1. Les chiffres n'ont pas de majuscules.
  2. si vous utilisiez la fonction ToUpper() au texte suivant: "il y a 8 bâtiments"
    Quel résultat aimeriez-vous avoir? "IL Y A 8 BÂTIMENTS" ou "IL Y A * BÂTIMENTS"
  3. la disposition du clavier est localisée, par exemple sur les claviers allemands il y a un ( à la touche 8

-1voto

BugFinder Points 7662

Ce n'est pas parce que vous appuyez sur Maj 8 pour obtenir un * que cela ne devient pas une valeur en majuscule, cela ne s'applique qu'aux caractères az.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X