Tengo una cadena que contiene palabras en una mezcla de mayúsculas y minúsculas.
Por ejemplo: string myData = "a Simple string";
Necesito convertir el primer carácter de cada palabra (separado por espacios) en mayúsculas. Entonces quiero el resultado como:string myData ="A Simple String";
¿Hay alguna manera fácil de hacer esto? No quiero dividir la cadena y hacer la conversión (ese será mi último recurso). Además, se garantiza que las cadenas están en inglés.
Respuestas:
MSDN: TextInfo.ToTitleCase
Asegúrese de incluir:
using System.Globalization
fuente
Actual result: "War And Peace"
.text = Regex.Replace(text, @"(?<!\S)\p{Ll}", m => m.Value.ToUpper());
, pero está lejos de ser perfecto. Por ejemplo, todavía no maneja comillas o paréntesis -"(one two three)"
->"(one Two Three)"
. Es posible que desee hacer una nueva pregunta después de averiguar exactamente qué quiere hacer con estos casos.Prueba esto:
Como ya se ha señalado, el uso de TextInfo.ToTitleCase podría no proporcionarle los resultados exactos que desea. Si necesita más control sobre la salida, puede hacer algo como esto:
Y luego úsalo así:
fuente
Otra variación más. Basado en varios consejos aquí, lo he reducido a este método de extensión, que funciona muy bien para mis propósitos:
fuente
Personalmente probé el
TextInfo.ToTitleCase
método, pero no entiendo por qué no funciona cuando todos los caracteres están en mayúsculas.Aunque me gusta la función util proporcionada por Winston Smith , permítame proporcionar la función que estoy usando actualmente:
Jugando con algunas cadenas de prueba :
Dando salida :
fuente
ToLower()
la cadena completa, ¿preferiría hacer todo ese trabajo usted mismo y llamar a la misma función en cada carácter individual? No solo es una solución fea, está dando cero beneficios, e incluso tomaría más tiempo que la función incorporada.rest = words[i].Substring(1).ToLower();
Recientemente encontré una mejor solución.
Si su texto contiene todas las letras en mayúscula, TextInfo no lo convertirá al caso apropiado. Podemos arreglar eso usando la función en minúscula dentro de esta manera:
Ahora esto convertirá todo lo que viene en Propercase.
fuente
fuente
Si alguien está interesado en la solución para Compact Framework:
fuente
Aquí está la solución para ese problema ...
fuente
Use
ToLower()
primero, queCultureInfo.CurrentCulture.TextInfo.ToTitleCase
en el resultado para obtener la salida correcta.fuente
Necesitaba una forma de lidiar con todas las palabras mayúsculas, y me gustó la solución de Ricky AH, pero di un paso más para implementarla como un método de extensión. Esto evita el paso de tener que crear su conjunto de caracteres y luego llamar a ToArray explícitamente cada vez, por lo que puede llamarlo en la cadena, así:
uso:
código:
fuente
Es mejor entender probando su propio código ...
Lee mas
http://www.stupidcodes.com/2014/04/convert-string-to-uppercase-proper-case.html
1) Convertir una cadena a mayúsculas
2) Convertir una cadena a minúsculas
3) Convertir una cadena a TitleCase
fuente
Aquí hay una implementación, personaje por personaje. Debería funcionar con "(One Two Three)"
fuente
fuente
Puede cambiar directamente el texto o la cadena a la correcta utilizando este método simple, después de verificar valores de cadena nulos o vacíos para eliminar errores:
fuente
Prueba esto:
Llame a este método en el evento TextChanged de TextBox.
fuente
Utilicé las referencias anteriores y la solución completa es: -
// Necesitamos un resultado como "Infoa2z significa toda la información"
// Necesitamos convertir la cadena en minúsculas también, de lo contrario no funciona correctamente.
http://www.infoa2z.com/asp.net/change-string-to-proper-case-in-an-asp.net-using-c#
fuente
Esto es lo que uso y funciona para la mayoría de los casos a menos que el usuario decida anularlo presionando shift o mayúsculas. Al igual que en los teclados Android e iOS.
fuente
Para aquellos que buscan hacerlo automáticamente al presionar una tecla, lo hice con el siguiente código en vb.net en un control de cuadro de texto personalizado, obviamente también puede hacerlo con un cuadro de texto normal, pero me gusta la posibilidad de agregar código recurrente para controles específicos a través de controles personalizados, se adapta al concepto de OOP.
fuente
Funciona bien incluso con el caso de camello: 'someText in YourPage'
fuente
Como un método de extensión:
Uso:
Resultado:
Kebab Is Deliciou's ;d C...
fuente
Alternativa con referencia a
Microsoft.VisualBasic
(también maneja cadenas en mayúscula):fuente
Sin usar
TextInfo
:Recorre cada letra en cada palabra, convirtiéndola en mayúsculas si es la primera letra, de lo contrario, se convierte en minúsculas.
fuente
Sé que esta es una vieja pregunta, pero estaba buscando lo mismo para C y lo descubrí, así que pensé que lo publicaría si alguien más está buscando una manera en C:
fuente