Me gustaría tener un método que transforme el primer carácter de una cadena en minúsculas.
Mis enfoques:
1)
public static string ReplaceFirstCharacterToLowerVariant(string name)
{
return String.Format("{0}{1}", name.First().ToString().ToLowerInvariant(), name.Substring(1));
}
2)
public static IEnumerable<char> FirstLetterToLowerCase(string value)
{
var firstChar = (byte)value.First();
return string.Format("{0}{1}", (char)(firstChar + 32), value.Substring(1));
}
¿Cuál sería tu enfoque?
char.ToLower(name[0]).ToString() + name.Substring(1)
+
operador es lento cuando concatena muchas cadenas. En ese casoStringBuilder
, a funcionaría mucho mejor. Sin embargo,+
es mucho más rápido questring.Format
. Use este último cuando realmente necesite formatear algo (como mostrar enteros, dobles o fechas).+
operador no es lento en absoluto, porque el compilador lo convierte en unString.Concat
(sin embargo,String.Join
es más rápido queString.Concat
por alguna razón tonta).public static string ToLowerFirst(this string source) { if (string.IsNullOrWhiteSpace(source)) return source; var charArray = source.ToCharArray(); charArray[0] = char.ToLower(charArray[0]); return new string(charArray); }
Usé la extensión Basado en el comentario de @ MatteoMigliore.Dependiendo de la situación, una pequeña programación defensiva podría ser deseable:
La
if
declaración también evita que se cree una nueva cadena si no se va a cambiar de todos modos. Es posible que desee que el método falle en la entrada nula y arroje unArgumentNullException
.Como la gente ha mencionado, usar
String.Format
para esto es exagerado.fuente
Por si acaso, ayuda a cualquiera que tropiece con esta respuesta.
Creo que esto sería mejor como método de extensión, entonces puede llamarlo con yourString.FirstCharacterToLower ();
fuente
El mio es
fuente
val.Remove
? Me parece un poco intuitivo.Me gusta la respuesta aceptada, pero además de verificar
string.IsNullOrEmpty
también verificaría siChar.IsLower(name[1])
se trata de abreviaturas. Por ejemplo, no querrá que el "SIDA" se convierta en "SIDA".fuente
La solución más rápida que conozco sin abusar de C #:
fuente
Combinó algunos y lo convirtió en una extensión encadenable. Cortocircuito agregado en espacios en blanco y sin letras.
fuente
Este es un pequeño método de extensión que utiliza la sintaxis más reciente y las validaciones correctas
fuente
Utilizar este:
fuente
Es mejor usar
String.Concat
queString.Format
si sabe que el formato no es cambiar datos, y solo se desea la concatenación.fuente