2010-08-24 33 views

Respuesta

68

Pruebe lo siguiente

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

ligeramente más corto: 'Char.IsLetter (str.FirstOrDefault())' – driis

+5

@driis que funciona pero añade varias asignaciones innecesarias a lo que debería ser un cheque libre asignación – JaredPar

+0

gracias todos por su ayuda, no estaba segura de a quién premiar ya que todos ustedes me ayudaron, solo fui con el número más alto que ya calculé ¿primero gana? gracias a todos sin embargo. – korben

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

Las letras no están restringidas a A-Z. Por ejemplo, Æ es una letra danesa. – driis

+3

Los días de ASCII se han ido. ¡Ahora todos los chicos geniales están usando Unicode! http://www.joelonsoftware.com/articles/Unicode.html –

+0

mea culpa - esp ya que uso unicode :-( –

0

Usted debe buscar la tabla ASCII, una tabla que sistemáticamente mapas de char actúa a valores enteros. Todos los caracteres en minúsculas son secuenciales (97-122), al igual que todos los caracteres en mayúscula (65-90). Sabiendo esto, ni siquiera tiene que lanzar a los valores int, simplemente verifique si el primer carácter de la cadena está dentro de uno de esos dos rangos (inclusive).

+1

No dijo que las letras están restringidas al juego de caracteres ASCII. – driis

+0

@maxstar: Sabiendo que ASCII usa valores secuenciales para' AZ' y 'a' -'z', preferiría que la solución de Mark se termine esto, ya que su solución evita el uso de números mágicos. También puede ajustar su solución para definir constantes en algún lugar para contener 97/122/65/90, pero eso es agregar constantes innecesarias, por lo que todavía prefiero la solución de Mark. Por supuesto, llamando a 'Char .IsLetter' como lo sugiere JaredPar es aún mejor. – Brian

+0

Estoy completamente de acuerdo en que el uso de Char.IsLetter puede ser mejor. Simplemente estoy sugiriendo que korben busque en la tabla ASCII para saber que los caracteres no están simplemente flotando aleatoriamente. n espacio cibernético, pero están sistemáticamente estructurados y asignados a números. Creo que saber esto es más importante y beneficioso que simplemente obtener una respuesta a la pregunta publicada, porque esto proporciona una comprensión subyacente. Y, por cierto, quise decir exactamente lo que Mark escribió: cuando dije "dentro de uno de esos dos rangos" quise decir rangos de caracteres, no de letras. Perdón por el malentendido. – user400348

7

Pruebe lo siguiente

bool isValid = char.IsLetter(name.FirstOrDefault()); 
Cuestiones relacionadas