【问题标题】:string conversion, first character upper of each word字符串转换,每个单词的第一个字符大写
【发布时间】:2019-02-08 03:28:50
【问题描述】:

我想转换:

HECHT, WILLIAM 

Hecht, William

在 C# 中。

有什么优雅的方法吗?

【问题讨论】:

    标签: c# string


    【解决方案1】:
    string name = "HECHT, WILLIAM";
    string s = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(name.ToLower());
    

    (注意它只适用于从小到大,因此从小写开始)

    【讨论】:

    • 里面有那个东西吗?天啊。 +1
    • @Marc:ToTitleCase() 是否正确处理“Peter O'Toole”和“Mary Jones-Smith”?
    • @Grant:彼得需要一个新名字,但玛丽很好。
    【解决方案2】:

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

    无论如何,只是想一想。

    【讨论】:

      【解决方案3】:
          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:不会为“Peter O'Toole”和“Mary Smith-Jones”产生正确的结果。
      • 没错,但要解决这个问题并不难。
      【解决方案4】:

      我对 Marc 的回答投了赞成票,但这也可以:

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

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

      【讨论】:

        【解决方案5】:

        我对上面的代码有问题,所以我稍微修改了一下,它工作了。来自智利的问候。好论文。

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

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多