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

时间:2009-07-22 21:23:38

标签: c# string

我想转换:

HECHT, WILLIAM 

Hecht, William

在c#中。

任何优雅的方式吗?

5 个答案:

答案 0 :(得分:31)

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

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

答案 1 :(得分:5)

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

无论如何,只需考虑一下。

答案 2 :(得分: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();
    }

答案 3 :(得分:0)

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

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

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

答案 4 :(得分:-2)

我在上面的代码上遇到了问题,因此我对其进行了一些修改,然后开始工作。来自智利的问候。好纸。

private void label8_Click(object sender, EventArgs e)
{
nombre1.Text= NOMPROPIO(nombre1.Text);
}

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