je veux convertir:conversion de chaîne, premier caractère supérieur de chaque mot
HECHT, WILLIAM
à
Hecht, William
en C#.
des façons élégantes de le faire?
je veux convertir:conversion de chaîne, premier caractère supérieur de chaque mot
HECHT, WILLIAM
à
Hecht, William
en C#.
des façons élégantes de le faire?
string name = "HECHT, WILLIAM";
string s = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(name.ToLower());
(notez qu'il ne fonctionne que plus bas à haut, donc minuscule départ)
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: Ne produit pas les résultats corrects pour "Peter O'Toole" et "Mary Smith-Jones". –
Vrai, mais il ne serait pas difficile de résoudre ce problème. – TruthStands
J'ai voté la réponse de Marc, mais cela va aussi fonctionner:
string s = Microsoft.VisualBasic.Strings.StrConv("HECHT, WILLIAM", VbStrConv.ProperCase,0);
Vous aurez besoin d'ajouter les références appropriées, mais je suis à peu près sûr que cela fonctionne sur toutes les entrées supérieures.
Je voudrais simplement inclure une réponse qui souligne que même si cela semble simple en théorie, dans la pratique en capitalisant correctement les noms de tout le monde peut être très compliqué:
Quoi qu'il en soit, juste quelque chose à penser.
Est-ce que c'est quelque chose là-dedans? Oh mon. +1 –
@Marc: Est-ce que 'ToTitleCase()' gère "Peter O'Toole" et "Mary Jones-Smith" correctement? –
@Grant: Peter a besoin d'un nouveau nom, Mary va bien. –