gpt4 book ai didi

c# - 将 "TheQuickBrownFox"转换为 "The quick brown fox"的 LINQ 方式

转载 作者:行者123 更新时间:2023-11-30 19:33:16 25 4
gpt4 key购买 nike

我正在尝试转换由以大写字母开头的单词组成的字符串。我想用空格分隔每个单词,只保留第一个大写字母。所有其他字母应小写。

例如,“TheQuickBrownFox”将变成“The quick brown fox”。

显然,我可以使用一个简单的 foreach 并通过检查每个字符来构建一个字符串,但我正在尝试使用 LINQ 来完成。

您知道如何使用 LINQ 优雅地解决这个问题吗?

感谢您的帮助。

最佳答案

您可以使用正则表达式(和小 LINQ)拆分单词:

public string SplitAsWords(string original)
{
var matches = Regex.Matches(original, "[A-Z][a-z]*").Cast<Match>();
var str = string.Join(" ", matches.Select(match => match.Value));
str = str[0] + str.Substring(1).ToLower();
return str;
}

用法示例:

[Test]
public void Example()
{
string str = SplitAsWords("TheQuickBrownFox");
Assert.That(str, Is.EqualTo("The quick brown fox"));
}

使用正则表达式的替代实现可以是(没有 LINQ):

public string SplitAsWords(string original)
{
var str = Regex.Replace(original, "[a-z][A-Z]",
new MatchEvaluator(match => match.Value.ToLower().Insert(1, " ")));

return str;
}

关于c# - 将 "TheQuickBrownFox"转换为 "The quick brown fox"的 LINQ 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3959681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com