2016-03-13 108 views
-1

最后的空间,我想改变一个绳子,让最后一个空格之后的字符变成大写后:大写字符串

"a"  => "A" 
"aa"  => "Aa" 
"aa b"  => "aa B" 
"aa bb cc" => "aa bb Cc" 

有一个简单的LINQ的语法(或任何其他的速记符号)?

+3

linq实际上是关于查询,而不是修改。为什么你需要一个linq表达式? – Default

+3

为什么[TextInfo.ToTitleCase](https://msdn.microsoft.com/en-us/library/system.globalization.textinfo.totitlecase.aspx)不适合你? – DavidG

+0

TextInfo.ToTitleCase将不起作用,只有最后一个单词应该以大写字母开头,而不是所有单词。 – PJL

回答

4

对于正则表达式而言,这似乎比Linq更重要。

例如,你可以这样写

string ConvertLastWordToUpperCase(string input) 
{ 
    return Regex.Replace(input, @"\w+$", 
     m => CultureInfo.CurrentCulture.TextInfo.ToTitleCase(m.Value)); 
} 

的方法和与你的测试串称之为

Console.WriteLine(ConvertLastWordToUpperCase("a")); 
Console.WriteLine(ConvertLastWordToUpperCase("aa")); 
Console.WriteLine(ConvertLastWordToUpperCase("aa b")); 
Console.WriteLine(ConvertLastWordToUpperCase("aa bb cc")); 

在这一点上,你也可以使用使用这样的事情

LINQ的执行转换
List<string> testCase = new List<string>() 
{ "a", "aa", "aa b", "aa bb cc"}; 
var result = testCase.Select(x => ConvertLastWordToUpperCase(x));