字符串转换,每个单词的第一个字符

我想转换:

HECHT, WILLIAM 

 Hecht, William 

在c#中。

这样做的任何优雅方式?

 string name = "HECHT, WILLIAM"; string s = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(name.ToLower()); 

(注意它只能从低到高工作,因此从小写开始)

我只想提供一个答案,指出虽然这在理论上看起来很简单,但在实践中,适当地利用每个人的名字可能非常复杂:

  • 彼得奥图尔
  • Xavier Sala-i-Martin
  • Salvador Domingo FelipeJacintoDalíiDomènech
  • Francis Sheehy-Skeffington
  • Asma al-Assad
  • 玛吉麦金托什
  • 文森特 – 梵高

无论如何,只是想一想。

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

我投了马克的答案,但这也有效:

 string s = Microsoft.VisualBasic.Strings.StrConv("HECHT, WILLIAM", VbStrConv.ProperCase,0); 

你需要添加适当的引用,但我很确定它适用于所有上层输入。