voglio convertire:conversione di stringa, primo carattere superiore di ogni parola
HECHT, WILLIAM
a
Hecht, William
in C#.
qualsiasi modo elegante di farlo?
voglio convertire:conversione di stringa, primo carattere superiore di ogni parola
HECHT, WILLIAM
a
Hecht, William
in C#.
qualsiasi modo elegante di farlo?
string name = "HECHT, WILLIAM";
string s = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(name.ToLower());
(nota funziona solo inferiore a superiore, quindi a partire minuscole)
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: non produce i risultati corretti per "Peter O'Toole" e "Mary Smith-Jones". –
Vero, ma non sarebbe difficile risolverlo. – TruthStands
ho votato la risposta di Marc, ma questo sarà anche funzionare:
string s = Microsoft.VisualBasic.Strings.StrConv("HECHT, WILLIAM", VbStrConv.ProperCase,0);
Dovrai aggiungere i riferimenti appropriati, ma sono abbastanza sicuro che funzioni su tutti gli input superiori.
Vorrei solo per includere una risposta che fa notare che anche se questo sembra semplice, in teoria, in pratica, capitalizzando correttamente i nomi di tutti può essere molto complicato:
In ogni caso, solo qualcosa a cui pensare.
È quella cosa lì dentro? Oh mio. +1 –
@Marc: 'ToTitleCase()' gestisce correttamente "Peter O'Toole" e "Mary Jones-Smith"? –
@Grant: Peter ha bisogno di un nuovo nome, Mary sta bene però. –