¿Hay algún método para hacerlo? ¿Podría hacerse con un método de extensión?¿Hay un método CapitalizeFirstLetter?
que quiero lograr esto:
string s = "foo".CapitalizeFirstLetter();
// s is now "Foo"
¿Hay algún método para hacerlo? ¿Podría hacerse con un método de extensión?¿Hay un método CapitalizeFirstLetter?
que quiero lograr esto:
string s = "foo".CapitalizeFirstLetter();
// s is now "Foo"
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.
System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase
Tiene la ventaja de ser la cultura de fallos.
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
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
Prueba esto:
static public string UpperCaseFirstCharacter(this string text) {
return Regex.Replace(text, "^[a-z]", m => m.Value.ToUpper());
}
Gracias, no sé por qué no me lo encuentro en busca – juan
Esto todavía asume que la primera letra es la correcta para cambiar. Aún no está perfectamente seguro para la cultura. – Karl
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. –