Estaba a punto de escribir mi propia extensión C# para convertir una cadena en el caso propio (es decir, poner en mayúscula la primera letra de cada palabra), luego me pregunté si no habría una función C# nativa para hacer eso ... ¿o sí?¿Hay una función de secuencia casera apropiada en C#?
Respuesta
There is a function that capitalises the first letters of words, aunque debería ver la sección de observaciones, ya que tiene algunas limitaciones que pueden hacer que no sea adecuada para sus necesidades.
String s = "yOu caN Use thIs"
s = System.Threading.Thread.CurrentThread
.CurrentCulture.TextInfo.ToTitleCase(s.ToLower());
La principal limitación que puedo ver con esto es que no es "verdadero" caso de título. es decir, en la frase "WaR y peaCe", la parte "y" debe estar en minúsculas en inglés. Sin embargo, este método lo capitalizaría.
Repetición de la respuesta – SteveC
¿Un voto a favor para publicar la respuesta unos momentos después del texto original? Todavía estaba escribiendo mi respuesta cuando se publicó la respuesta aceptada. !! –
Upvote: en realidad proporcionó la respuesta, mientras que la respuesta aceptada es solo un enlace. ¡Muy apreciado! –
puede simplemente añadir algunos métodos de extensión al tipo Sting:
public static class StringExtension
{
/// <summary>
/// Use the current thread's culture info for conversion
/// </summary>
public static string ToTitleCase(this string str)
{
var cultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture;
return cultureInfo.TextInfo.ToTitleCase(str.ToLower());
}
/// <summary>
/// Overload which uses the culture info with the specified name
/// </summary>
public static string ToTitleCase(this string str, string cultureInfoName)
{
var cultureInfo = new CultureInfo(cultureInfoName);
return cultureInfo.TextInfo.ToTitleCase(str.ToLower());
}
/// <summary>
/// Overload which uses the specified culture info
/// </summary>
public static string ToTitleCase(this string str, CultureInfo cultureInfo)
{
return cultureInfo.TextInfo.ToTitleCase(str.ToLower());
}
}
Esto debería funcionar.
public static string ToTitleCase(this string strX)
{
string[] aryWords = strX.Trim().Split(' ');
List<string> lstLetters = new List<string>();
List<string> lstWords = new List<string>();
foreach (string strWord in aryWords)
{
int iLCount = 0;
foreach (char chrLetter in strWord.Trim())
{
if (iLCount == 0)
{
lstLetters.Add(chrLetter.ToString().ToUpper());
}
else
{
lstLetters.Add(chrLetter.ToString().ToLower());
}
iLCount++;
}
lstWords.Add(string.Join("", lstLetters));
lstLetters.Clear();
}
string strNewString = string.Join(" ", lstWords);
return strNewString;
}
- 1. Criptografía casera
- 2. Serialización casera frente a Java
- 3. Cerrar una secuencia en la función, ¿una mala idea?
- 4. ¿Hay alguna manera de hacer una función atómica en C? .
- 5. ¿Hay un tipo de función en C#?
- 6. Forma apropiada de invocar render() en BackboneJS
- 7. Descompresión de una secuencia en C#
- 8. C++: ¿Qué es una secuencia
- 9. ¿Hay una en secuencia de memoria que bloquea como una secuencia de archivo
- 10. ¿Cuánta sobrecarga hay para llamar a una función en C++?
- 11. ¿Por qué no hay una función String.IsNumeric en C#
- 12. ¿Hay alguna función C++ que reemplace a xml Special Character con su secuencia de escape?
- 13. ¿Hay alguna manera de enganchar una función administrada en C# como si fuera una función no administrada en C++?
- 14. ¿Hay una función MAKELONGLONG?
- 15. ¿Cómo escapar o terminar una secuencia de escape en C
- 16. ¿Hay una función de raíz en rubí?
- 17. ¿Hay una función de "mapa" en php?
- 18. Capitalización apropiada para títulos en Python
- 19. ¿Hay una función js que reemplace a xml Special Character con su secuencia de escape?
- 20. ¿Por qué hay una secuencia de escape para VERTICAL TAB?
- 21. En un proyecto C/Java, ¿cuál es una forma apropiada de administrar la compilación?
- 22. Hay una diferencia entre (función() {...}()); y (función() {...})() ;?
- 23. ¿Hay una biblioteca C# que realice la función Excel NORMINV?
- 24. ¿Cómo diseñar una clase apropiada para millones de asignaciones?
- 25. ¿Hay alguna más apropiada para probar si el constructor arroja una excepción?
- 26. ¿Hay alguna manera de obtener el nombre de la función dentro de una función de C++?
- 27. ¿Hay una función hash circular?
- 28. ¿Cómo crear una matriz con secuencia de enteros en C#?
- 29. ¿Hay una función lambda en Scala?
- 30. ¿Hay una función eval() en Java?
Pero no adecuadamente ejemplos de casos apropiados, tales como "o'riley" a "O'Riley", en lugar de producir "O'riley". – midspace
@midspace - Como dije, sí hay una función, pero debería leer la sección de comentarios. Este tipo de caso de borde se llama explícitamente por ahí. –
@midspace Quizás esto sea exagerado, pero decidí hacer mi propia versión con 'Regex.Replace (input.ToLower(), @" \ b [az] ", m => m.Value.ToUpper())' – Michael