首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >BestPractice -将字符串的第一个字符转换为小写

BestPractice -将字符串的第一个字符转换为小写
EN

Stack Overflow用户
提问于 2010-08-25 18:42:36
回答 13查看 62.7K关注 0票数 148

我希望有一个方法,可以将字符串的第一个字符转换为小写。

我的方法:

1.

代码语言:javascript
复制
public static string ReplaceFirstCharacterToLowerVariant(string name)
{
    return String.Format("{0}{1}", name.First().ToString().ToLowerInvariant(), name.Substring(1));
}

2.

代码语言:javascript
复制
public static IEnumerable<char> FirstLetterToLowerCase(string value)
{
    var firstChar = (byte)value.First();
    return string.Format("{0}{1}", (char)(firstChar + 32), value.Substring(1));
}

你的方法是什么?

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2010-08-25 18:45:43

我将使用简单的连接:

代码语言:javascript
复制
Char.ToLowerInvariant(name[0]) + name.Substring(1)

第一个解决方案没有优化,因为string.Format很慢,如果你有一个永远不会改变的格式,你就不需要它了。它还生成一个额外的字符串来将字母转换为小写,这是不需要的。

使用"+ 32“的方法是丑陋的/不可维护的,因为它需要了解ASCII字符值偏移量。它还将使用Unicode数据和ASCII符号字符生成不正确的输出。

票数 254
EN

Stack Overflow用户

发布于 2010-08-25 18:58:45

根据情况,可能需要一些防御性编程:

代码语言:javascript
复制
public static string FirstCharacterToLower(string str)
{
    if (String.IsNullOrEmpty(str) || Char.IsLower(str, 0))
        return str;

    return Char.ToLowerInvariant(str[0]) + str.Substring(1);
}

如果不打算更改字符串,if语句还可以防止构建新的字符串。您可能希望该方法在空输入时失败,并抛出一个ArgumentNullException

正如人们所提到的,使用String.Format来实现这一点有点过头了。

票数 68
EN

Stack Overflow用户

发布于 2016-04-13 01:04:10

以防它能帮助任何碰巧发现这个答案的人。

我认为这是最好的扩展方法,然后你可以用yourString.FirstCharacterToLower()来调用它;

代码语言:javascript
复制
public static class StringExtensions
{
    public static string FirstCharacterToLower(this string str)
    {
        if (String.IsNullOrEmpty(str) || Char.IsLower(str, 0))
        {
            return str;
        }

        return Char.ToLowerInvariant(str[0]) + str.Substring(1);
    }
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3565015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档