2010-08-24 5 views

Répondre

68

Essayez le

suivant
string str = ...; 
bool isLetter = !String.IsNullOrEmpty(str) && Char.IsLetter(str[0]); 
+22

légèrement plus court: 'Char.IsLetter (str.FirstOrDefault())' – driis

+5

@driis qui fonctionne, mais il ajoute plusieurs allocations inutiles à ce qui devrait être une allocation gratuite chèque – JaredPar

+0

merci tout le monde pour votre aide, je n'étais pas sûr de savoir à qui attribuer puisque vous avez tous aidé, je viens d'aller avec le plus grand nombre déjà figuré premières victoires? Merci à tous. – korben

0
return (myString[0] >= 'A' && myString[0] <= 'Z') || (myString[0] >= 'a' && myString[0] <= 'z') 
+6

Les lettres ne sont pas limitées à A-Z. Par exemple, Æ est une lettre en danois. – driis

+3

Les jours d'ASCII sont partis. Maintenant, tous les enfants cool utilisent Unicode! http://www.joelonsoftware.com/articles/Unicode.html –

+0

mea culpa - esp depuis que j'utilise unicode :-( –

0

Vous devriez regarder la table ASCII, une table qui systématiquement cartes char Acters à des valeurs entières. Tous les caractères minuscules sont séquentiels (97-122), tout comme les caractères majuscules (65-90). Sachant cela, vous n'avez même pas à lancer les valeurs int, vérifiez simplement si le premier caractère de la chaîne se trouve dans l'une de ces deux plages (inclus).

+1

Il n'a pas dit que les lettres sont limitées au jeu de caractères ASCII – driis

+0

@maxstar: Sachant que ASCII utilise des valeurs séquentielles pour' AZ' et 'a'-' z', je préférerais que la solution de Mark soit terminée Comme sa solution évite d'utiliser des nombres magiques, vous pouvez également ajuster votre solution pour définir des constantes dans un endroit pour contenir 97/122/65/90, mais cela ajoute des constantes inutiles, donc je préfère toujours la solution de Mark. .IsLetter' comme suggéré par JaredPar est encore mieux – Brian

+0

Je suis tout à fait d'accord que l'utilisation de Char.IsLetter peut être mieux.Je suis simplement suggérant que korben rechercher la table ASCII pour savoir que les caractères ne sont pas juste au hasard flottant i n cyber espace, mais sont systématiquement structurés et mappés aux numéros. Je crois que savoir cela est plus important et bénéfique que d'obtenir simplement une réponse à la question affichée, car cela fournit une compréhension sous-jacente. Et au fait, je voulais dire exactement ce que Mark a écrit: quand j'ai dit "dans l'une de ces deux gammes", je voulais dire des gammes de caractères, pas des ints. Désolé pour le malentendu. – user400348

7

Effectuez les opérations suivantes

bool isValid = char.IsLetter(name.FirstOrDefault()); 
Questions connexes