c# - 使用 LINQ 和 lambda 将字符串置于正确的大小写形式

标签 c# linq lambda

我有一个名为 ProperCase 的函数,它接受一个字符串,然后将每个单词中的第一个字母转换为大写。因此 ProperCase("john smith") 将返回“John Smith”。这是代码:

    public string ProperCase(string input)
    {
        var retVal = string.Empty;
        var words = input.Split(' ');

        foreach (var word in words)
        {
            if (word.Length == 1)
            {
                retVal += word.ToUpper();
            }
            else if (word.Length > 1)
            {
                retVal += word.Substring(0, 1).ToUpper() + word.Substring(1).ToLower();
            }

            retVal += ' ';
        }

        if (retVal.Length > 0)
        {
            retVal = retVal.Substring(0, retVal.Length - 1);
        }

        return retVal;
    }

这段代码工作得很好,但我很确定我可以使用 LINQ 和 lambda 更优雅地完成它。有人可以告诉我怎么做吗?

最佳答案

将输入字符串拆分为单词,将每个单词转换为标题大小写,然后将转换后的单词重新连接在一起:

TextInfo textInfo = new CultureInfo("en-US", false).TextInfo;

string result = string.Join(" ", input.Split(' ')
                                      .Select(word => textInfo.ToTitleCase(word))
                                      .ToArray());

关于c# - 使用 LINQ 和 lambda 将字符串置于正确的大小写形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2610779/

相关文章:

c# - OneDrive 客户端身份验证 (SDK)

c# - 在 IList 上使用 Linq 方法 .Any(<predicate>) 和 .All(<predicate>) 时,谓词是否按严格顺序应用于列表?

javafx - 如果值为 null 且包含选定值,则禁用组合框

c++ - 头文件中的 Lambda 错误

c# - 如何判断客户端机器是否支持PDF文件格式

c# - 如何将 <List> 数组传递给存储过程

c# - 在 Roslyn 诊断分析器中检测隐式转换

linq - 使用 Any() 时优化 OrderBy()

c# - 如何在 DataRow 上使用 .ToDictionary() 扩展方法

c++ - 我可以让 lambda 推断出变体返回类型吗?