我试图转换一个由大写字母开头的单词组成的字符串.我想用空格分隔每个单词,只保留第一个大写字母.所有其他字母应为小写.
例如,"TheQuickBrownFox"将成为"快速棕色狐狸".
显然,我可以使用一个简单的方法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;
}
Run Code Online (Sandbox Code Playgroud)
一个用法示例:
[Test]
public void Example()
{
string str = SplitAsWords("TheQuickBrownFox");
Assert.That(str, Is.EqualTo("The quick brown fox"));
}
Run Code Online (Sandbox Code Playgroud)
使用正则表达式的替代实现可以是(没有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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
359 次 |
| 最近记录: |