【问题标题】:How do I make letters to uppercase after each of a set of specific characters如何在一组特定字符中的每一个之后将字母变为大写
【发布时间】:2013-06-15 17:11:17
【问题描述】:

我有一个字符集合(',', '.', '/', '-', ' ')然后我有一个字符串集合(大约 500 个)。

我想要尽快做的是:在每个字符之后,我想让下一个字母大写。

我也希望第一个大写,并且许多字符串都以大写开头。

编辑: 我修改了 tdragons 对这个最终结果的回答:

    public static String CapitalizeAndStuff(string startingString)
    {
        startingString = startingString.ToLower();
        char[] chars = new[] { '-', ',', '/', ' ', '.'};
        StringBuilder result = new StringBuilder(startingString.Length);
        bool makeUpper = true;
        foreach (var c in startingString)
        {
            if (makeUpper)
            {
                result.Append(Char.ToUpper(c));
                makeUpper = false;
            }
            else
            {
                result.Append(c);
            }
            if (chars.Contains(c))
            {
                makeUpper = true;
            }
        }
        return result.ToString();
    }

然后我为我所有的字符串调用这个方法。

【问题讨论】:

    标签: c# string-formatting indexof capitalize toupper


    【解决方案1】:

    您可以多次对整个字符串进行字符串拆分,每个元素一次,冲洗并重复,然后将每个块大写。

    char[] tempChar = {',','-'};
    List<string> tempList = new List();
    tempList.Add(yourstring);
    foreach(var currentChar in tempChar)
    {
      List<string> tempSecondList = new List();
      foreach(var tempString in tempList)
      {
        foreach(var tempSecondString in tempString.split(currentchar))
        {
          tempSecondList.Add(tempSecondString);
        }
      }
      tempList = tempSecondList;
    }
    

    无论如何,我希望我的计数是正确的,然后将 tempList 中的每个条目都设置为上

    【讨论】:

      【解决方案2】:

      或者您可以使用简单的正则表达式:

      var result = Regex.Replace(str, @"([.,-][a-z]|\b[a-z])", m => m.Value.ToUpper());
      

      【讨论】:

        【解决方案3】:
                char[] chars = new char[] { ',', '.', '/', '-', ' ' };
                string input = "Foo bar bar foo, foo, bar,foo-bar.bar_foo zz-";
                string result = input[0] + new string(input.Skip(1).Select((c, i) => 
                          chars.Contains(input[i]) ? char.ToUpper(input[i + 1]) : input[i + 1]
                     ).ToArray());
                Console.WriteLine(result);
        

        【讨论】:

          【解决方案4】:
          public static string Capitalise(string text, string targets, CultureInfo culture)
          {
              bool capitalise = true;
              var result = new StringBuilder(text.Length);
          
              foreach (char c in text)
              {
                  if (capitalise)
                  {
                      result.Append(char.ToUpper(c, culture));
                      capitalise = false;
                  }
                  else
                  {
                      if (targets.Contains(c))
                          capitalise = true;
          
                      result.Append(c);
                  }
              }
          
              return result.ToString();
          }
          

          像这样使用它:

          string targets = ",./- ";
          string text = "one,two.three/four-five six";
          
          Console.WriteLine(Capitalise(text, targets, CultureInfo.InvariantCulture));
          

          【讨论】:

            【解决方案5】:
            string a = "fef-aw-fase-fes-fes,fes-,fse--sgr";
            char[] chars = new[] { '-', ',' };
            StringBuilder result = new StringBuilder(a.Length);
            bool makeUpper = true;
            foreach (var c in a)
            {
                if (makeUpper)
                {
                    result.Append(Char.ToUpper(c));
                    makeUpper = false;
                }
                else
                {
                    result.Append(c);
                }
                if (chars.Contains(c))
                {
                    makeUpper = true;
                }
            }
            

            【讨论】:

              猜你喜欢
              • 2014-12-01
              • 2016-03-12
              • 1970-01-01
              • 2021-09-12
              • 1970-01-01
              • 1970-01-01
              • 2017-07-07
              • 2018-12-29
              • 1970-01-01
              相关资源
              最近更新 更多