【问题标题】:First Character of String Lowercase - C# [duplicate]字符串小写的第一个字符 - C# [重复]
【发布时间】:2014-03-12 10:06:09
【问题描述】:

如何将字符串的第一个字符变为小写?

例如:ConfigService

我需要它是这样的:configService

【问题讨论】:

标签: c# string lowercase


【解决方案1】:

这将起作用:

public static class StringExtensions
{
    [CanBeNull]
    public static string FirstCharToLowerCase([CanBeNull] this string str)
    {
        if (string.IsNullOrEmpty(str) || char.IsLower(str[0]))
            return str;

        return char.ToLower(str[0]) + str.Substring(1);
    }
}

(此代码排列为“C#扩展方法”)

用法:

myString = myString.FirstCharToLowerCase();

【讨论】:

  • 别忘了检查空字符串。
  • 以及只包含一个字符的字符串。
  • 注意:char.IsLower(str[0]) 检查不是必需的,但可能会加快执行速度。
【解决方案2】:

一种方式:

string newString = oldString;
if (!String.IsNullOrEmpty(newString))
    newString = Char.ToLower(newString[0]) + newString.Substring(1);

不管怎样,一个扩展方法:

public static string ToLowerFirstChar(this string input)
{
    if(string.IsNullOrEmpty(input))
        return input;

    return char.ToLower(input[0]) + input.Substring(1);
}

用法:

string newString = "ConfigService".ToLowerFirstChar(); // configService

【讨论】:

  • @ThorstenDittmar .NET 有 Unicode 字符串。而char代表UTF-16字符
  • @SergeyBerezovskiy 正确。不过,同样的问题也适用于代理对,它不会被正确处理(在我见过的大多数代码中,一般来说也不能正确处理)。
  • @AmitJoki 在这种情况下,Char.ToLower 返回原始字符,因此字符串保持不变。
  • @AmitJoki 那是因为你打印的是s而不是newString
  • @SergeyBerezovskiy 我明白了。我实际上并不知道:-)
【解决方案3】:

你可以试试这个:

lower = source.Substring(0, 1).ToLower() + source.Substring(1);

【讨论】:

    【解决方案4】:
        string FirstLower(string s)
        {
            if(string.IsNullOrEmpty(s))
                return s;
            return s[0].ToString().ToLower() + s.Substring(1);
        }
    

    【讨论】:

      【解决方案5】:

      使用此功能:

      public string GetStringWithFirstCharLowerCase(string value)
      {
          if (value == null) throw new ArgumentNullException("value")
          if (String.IsNullOrWhiteSpace(value)) return value;
      
          char firstChar = Char.ToLowerInvariant(value[0]);
      
          if (value.Length == 1) return firstChar;
      
          return firstChar + value.Substring(1);
      }
      

      请注意,如果需要支持其他语言,则需要进一步重载。

      【讨论】:

        【解决方案6】:
            public static string Upper_To_Lower(string text)
            {
                if (Char.IsUpper(text[0]) == true) { text = text.Replace(text[0], char.ToLower(text[0])); return text; }
        
                return text;
            }
        
            public static string Lower_To_Upper(string text)
            {
                if (Char.IsLower(text[0]) == true) { text = text.Replace(text[0], char.ToUpper(text[0])); return text; }
        
                return text;
            }
        

        希望这会对您有所帮助!这里我做了两个方法,将任何字符串作为参数,并根据您将使用的方法返回第一个字母大写或小写的字符串

        【讨论】:

          【解决方案7】:
          string test = "ConfigService";
          string result = test.Substring(0, 1).ToLower() + test.Substring(1);
          

          【讨论】:

          • 另外,使用Substring 方法来获取第一个字符似乎有点过头了:)
          【解决方案8】:

          我会这样做:

          Char.ToLowerInvariant(yourstring[0]) + yourstring.Substring(1)
          

          简单并完成工作。

          编辑:

          看起来this thread 也有同样的想法。 :)

          【讨论】:

            【解决方案9】:

            这可以帮助你,如果它是大写的,则将第一个字符更改为小写,并检查 null 或空且只有空格字符串:

            string str = "ConfigService";
            string strResult = !string.IsNullOrWhiteSpace(str) && char.IsUpper(str, 0) ? str.Replace(str[0],char.ToLower(str[0])) : str;
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2016-03-27
              • 1970-01-01
              • 2013-02-21
              • 1970-01-01
              • 2013-09-03
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多