2009-07-22 5 views

Répondre

31
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)

+0

Est-ce que c'est quelque chose là-dedans? Oh mon. +1 –

+0

@Marc: Est-ce que 'ToTitleCase()' gère "Peter O'Toole" et "Mary Jones-Smith" correctement? –

+0

@Grant: Peter a besoin d'un nouveau nom, Mary va bien. –

0
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(); 
    } 
+0

@TruthStands: Ne produit pas les résultats corrects pour "Peter O'Toole" et "Mary Smith-Jones". –

+0

Vrai, mais il ne serait pas difficile de résoudre ce problème. – TruthStands

0

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.

Questions connexes