visual validar una totitlecase studio primera poner palabra minusculas mayusculas mayuscula letra convertir caracteres cadena cada c#

validar - Cómo hacer minúsculas en una cadena a excepción del primer carácter con C#



totitlecase c# (8)

Esto se puede hacer con simples operaciones de cadena:

s = s.Substring(0, 1) + s.Substring(1).ToLower();

Tenga en cuenta que esto hace exactamente lo que solicitó, es decir, convierte todos los caracteres a minúsculas, excepto el primero que no se modifica.

Si en su lugar también desea cambiar el primer carácter a mayúsculas, haría lo siguiente:

s = s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower();

Tenga en cuenta que este código supone que hay al menos dos caracteres en las cadenas. Si existe la posibilidad de que sea más corto, por supuesto, primero debe probar para eso.

¿Cómo convertir una cadena a minúsculas a excepción del primer carácter? ¿Se puede completar esto con LINQ?

Gracias


No estoy seguro de que pueda hacerlo en linq. Este 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; }


Puedes usar un método de extensión:

static class StringExtensions { public static string ToLowerFirst(this string text) => !string.IsNullOrEmpty(text) ? $"{text.Substring(0, 1).ToLower()}{text.Substring(1)}" : text; }

Pruebas unitarias también (usando FluentAssertions y Microsoft UnitTesting):

[TestClass] public class StringExtensionsTests { [TestMethod] public void ToLowerFirst_ShouldReturnCorrectValue() => "ABCD" .ToLowerFirst() .Should() .Be("aBCD"); [TestMethod] public void ToLowerFirst_WhenStringIsEmpty_ShouldReturnCorrectValue() => string.Empty .ToLowerFirst() .Should() .Be(string.Empty); }


Si solo tiene una palabra en la cadena, puede usar TextInfo.ToTitleCase . No hay necesidad de usar Linq.

Como @Guffa señaló:

Esto convertirá cualquier cadena en el título del título, por lo que "hola mundo" y "HOLA MUNDIAL" se convertirán en "Hola mundo".

Para lograr exactamente lo que pidió (convierta todos los caracteres a menos, excepto el primero), puede hacer lo siguiente:

string mostLower = myString.Substring(0, 1) + myString.Substring(1).ToLower();


Use namespace: using System.Globalization;

...

string value = CultureInfo.CurrentCulture.TextInfo.ToTitleCase("hello");

EDITAR

Este código funciona solo si su única palabra. Para convertir todos los caracteres en una letra inferior, excepto la primera, verifique la respuesta de Guffa.

string value = myString.Substring(0, 1) + myString.Substring(1).ToLower();


basado en el ejemplo de guffa anterior (ligeramente modificado). puede convertirlo en un método de extensión (por favor, perdone el método mal llamado :)):

public static string UpperFirst(this string source) { return source.ToLower().Remove(0, 1) .Insert(0, source.Substring(0, 1).ToUpper()); }

uso:

var myNewString = myOldString.UpperFirst(); // or simply referenced as myOldString.UpperFirst() where required

saludos guffa


var initialString = "Hello hOW r u?"; var res = string.Concat(initialString..ToUpper().Substring(0, 1), initialString.ToLower().Substring(1));


String newString = new String(str.Select((ch, index) => (index == 0) ? ch : Char.ToLower(ch)).ToArray());