2009-04-14 17 views

Respuesta

15

Un método simple extensión, que en mayúscula la primera letra de una cadena. Como señaló Karl, esto supone que la primera letra es la correcta para cambiar y, por lo tanto, no es perfectamente segura para la cultura.

public static string CapitalizeFirstLetter(this String input) 
{ 
    if (string.IsNullOrEmpty(input)) 
     return input; 

    return input.Substring(0, 1).ToUpper(CultureInfo.CurrentCulture) + 
     input.Substring(1, input.Length - 1); 
} 

También puedes usar System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase. La función convertirá el primer carácter de cada palabra en mayúscula. Entonces, si su cadena de entrada es have fun, el resultado será Have Fun.

public static string CapitalizeFirstLetter(this String input) 
{ 
    if (string.IsNullOrEmpty(input)) 
     return input; 

    return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(input); 
} 

Consulte this question para obtener más información.

+0

Gracias, no sé por qué no me lo encuentro en busca – juan

+1

Esto todavía asume que la primera letra es la correcta para cambiar. Aún no está perfectamente seguro para la cultura. – Karl

+0

primer ejemplo arrojará una excepción si la longitud de la cadena es cero. Debería agregar "if (string.IsNullOrEmpty (input)) return input;" en la cima. –

10

System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase

Tiene la ventaja de ser la cultura de fallos.

+0

Después de leer los comentarios en los documentos de MSDN, resulta que este método simplemente cambia las primeras letras a mayúsculas independientemente de los detalles culturales reales de todos modos. +1 para señalar el método de marco oscuro, -1 para el método especificado que es engañoso/roto. – ScottS

+1

Bueno, el optimista diría que si lo usa ahora, en realidad puede funcionar como se espera en el futuro. En cualquier caso, hace exactamente lo que se solicitó, y está integrado en el marco: P – Chris

0

Prueba esto:

static public string UpperCaseFirstCharacter(this string text) { 
    return Regex.Replace(text, "^[a-z]", m => m.Value.ToUpper()); 
} 
Cuestiones relacionadas