Quiero convertir:conversión de cadenas, primer carácter superior de cada palabra
HECHT, WILLIAM
a
Hecht, William
en C#.
¿alguna forma elegante de hacer esto?
Quiero convertir:conversión de cadenas, primer carácter superior de cada palabra
HECHT, WILLIAM
a
Hecht, William
en C#.
¿alguna forma elegante de hacer esto?
string name = "HECHT, WILLIAM";
string s = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(name.ToLower());
(tenga en cuenta que sólo funciona inferior a superior, por lo tanto, a partir minúscula)
public static string CamelCase(this string s)
{
if (String.IsNullOrEmpty(s))
s = "";
string phrase = "";
string[] words = s.Split(' ');
foreach (string word in words)
{
if (word.Length > 1)
phrase += word.Substring(0, 1).ToUpper() + word.Substring(1).ToLower() + " ";
else
phrase += word.ToUpper() + " ";
}
return phrase.Trim();
}
@TruthStands: no produce los resultados correctos para "Peter O'Toole" y "Mary Smith-Jones". –
Cierto, pero no sería difícil arreglar eso. – TruthStands
He votado en la respuesta de Marc, pero esto también funcionará:
string s = Microsoft.VisualBasic.Strings.StrConv("HECHT, WILLIAM", VbStrConv.ProperCase,0);
Deberá agregar las referencias adecuadas, pero estoy bastante seguro de que funciona en las entradas superiores.
Sólo me gustaría incluir una respuesta que señala que aunque esto parece simple en teoría, en la práctica capitalizar adecuadamente los nombres de cada uno puede ser muy complicada:
todos modos, sólo algo en que pensar.
¿Eso está ahí? Oh mi. +1 –
@Marc: ¿'ToTitleCase()' maneja correctamente "Peter O'Toole" y "Mary Jones-Smith"? –
@Grant: Peter necesita un nuevo nombre, aunque Mary está bien. –