使用 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 更优雅地完成它。有人可以告诉我怎么做吗?
I have this function called ProperCase that takes a string, then converts the first letter in each word to uppercase. So ProperCase("john smith") will return "John Smith". Here is the code:
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;
}
This code workds perfectly, but I'm pretty sure I can do it more elegantly with LINQ and lambdas. Can some please show me how?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
将输入字符串拆分为单词,将每个单词转换为标题大小写,然后将转换后的单词重新连接在一起:
Split the input string into words, convert each word to title case, and join the converted words back together:
另一种解决方案是
Another solution would be
基于 dtb 的回答。如果您在 cshtml 页面中处理 c# razor 并需要一个衬垫:
或 Javascript(可以使用正则表达式,但这很有趣):
Based on dtb's answer. If you are dealing with c# razor in an cshtml page and need a one liner:
Or Javascript (could use regex, but this was fun figuring out):