¿Cómo convertir una cadena a minúscula, excepto el primer carácter? ¿Se puede completar esto con LINQ?Cómo minúsculas de una cadena a excepción del primer carácter con C#
Gracias
¿Cómo convertir una cadena a minúscula, excepto el primer carácter? ¿Se puede completar esto con LINQ?Cómo minúsculas de una cadena a excepción del primer carácter con C#
Gracias
String newString = new String(str.Select((ch, index) => (index == 0) ? ch : Char.ToLower(ch)).ToArray());
Si sólo tiene una palabra de la cadena, puede utilizar TextInfo.ToTitleCase
. No es necesario usar Linq.
Como @Guffa señaló:
Esto convertirá cualquier cadena a mayúsculas, por lo que, "hola mundo" y "Hello World" sería tanto puede convertir en "Hello World".
Para lograr exectly lo que pidió (convertir todos los caracteres a menor, excepto el primero), puede hacer lo siguiente:
string mostLower = myString.Substring(0, 1) + myString.Substring(1).ToLower();
Eso no hace lo que el OP solicitó. En lugar de convertir la secuencia ''THIS AND THAT' 'en'' This and that '', la convertirá en '' This And That ''. – Guffa
Adición: Me acabo de dar cuenta de que 'ToTitleCase' deja sin cambios una cadena en mayúsculas. Girará '" hello world "' en '" Hello World "', pero dejará '' HELLO WORLD "' sin cambios. – Guffa
En segundo lugar lo que dijo Guffa; la descripción aquí lo dice así: https://msdn.microsoft.com/en-us/library/system.globalization.textinfo.totitlecase.aspx –
uso de espacio de nombres: using System.Globalization;
. ..
string value = CultureInfo.CurrentCulture.TextInfo.ToTitleCase("hello");
EDITAR
Este código solo funciona si su única palabra .Para convertir todos los caracteres en inferiores, excepto la primera letra, compruebe la Respuesta de Guffa.
string value = myString.Substring(0, 1) + myString.Substring(1).ToLower();
Eso no hace lo que pidió el OP. En lugar de convertir la secuencia ''THIS AND THAT' 'en'' This and that '', la convertirá en '' This And That ''. – Guffa
Adición: Me acabo de dar cuenta de que 'ToTitleCase' deja sin cambios una cadena en mayúsculas. Convertirá ''esto y aquello' 'en''Esto Y Eso' ', pero '' ESTE Y ESO '' no cambiará. – Guffa
asegurarse de que puede hacerlo en LINQ aquí es un enfoque no LINQ:
public static string FirstCap(string value)
{
string result = String.Empty;
if(!String.IsNullOrEmpty(value))
{
if(value.Length == 1)
{
result = value.ToUpper();
}
else
{
result = value.Substring(0,1).ToString().ToUpper() + value.Substring(1).ToLower();
}
}
return result;
}
Esto se puede hacer con las operaciones de cadenas simples:
s = s.Substring(0, 1) + s.Substring(1).ToLower();
en cuenta que esto exactamente lo que pediste, es decir, convierte todos los caracteres en minúsculas, excepto el primero que no se modifica.
Si por el contrario también desea cambiar el primer carácter en mayúsculas, puede hacer:
s = s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower();
Tenga en cuenta que este código se supone que hay por lo menos dos caracteres en las cadenas. Si existe la posibilidad de que sea más corto, por supuesto deberías probarlo primero.
que obviamente se podría convertir muy bien a un método de extensión si es necesario ... :) –
Este código funcionará con una cadena de caracteres única. –
según el ejemplo de guffa anterior (ligeramente modificado). podría convertir eso a un método de extensión (por favor, perdón por el método llamado mal :)):
public static string UpperFirst(this string source)
{
return source.ToLower().Remove(0, 1)
.Insert(0, source.Substring(0, 1).ToUpper());
}
de uso:
var myNewString = myOldString.UpperFirst();
// or simply referenced as myOldString.UpperFirst() where required
aplausos Guffa
Información muy útil, gracias. – Ricky
var initialString = "Hello hOW r u?";
var res = string.Concat(initialString..ToUpper().Substring(0, 1), initialString.ToLower().Substring(1));
priyanka, por supuesto necesitarás configurar la primera parte de esa initialString ToUpper() :-) de lo contrario solo enviarás una cadena en minúscula cada vez (a menos que la primera letra sea de hecho mayúscula, como es tu ejemplo) . –
Cant que acaba de minúsculas todo luego volver a mayúscula el primer personaje? – Lloyd
lloyd, hice eso, vea mi respuesta a continuación :) –