从字符串获取大写字母的索引

可能重复:
一种“松散”CamelCased字符串的算法

我有一个这样的字符串: MyUnsolvedProblem

我想修改这样的字符串: My Unsolved Problem

我怎样才能做到这一点? 我尝试过使用正则表达式没有运气!

 var result = Regex.Replace("MyUnsolvedProblem", @"(\p{Lu})", " $1").TrimStart(); 

没有正则表达式:

 var s = "MyUnsolvedProblem"; var result = string.Concat(s.Select(c => char.IsUpper(c) ? " " + c.ToString() : c.ToString())) .TrimStart(); 
 resultString = Regex.Replace("MyUnsolvedProblem", "([az])([AZ])", "$1 $2"); 

如果有帮助,我可以提供一个如何在C#中执行此操作的建议:

 String PreString = "getAllItemsByID"; System.Text.StringBuilder SB = new System.Text.StringBuilder(); foreach (Char C in PreString) { if (Char.IsUpper(C)) SB.Append(' '); SB.Append(C); } Response.Write(SB.ToString()); 

我确信有一种方法可以使用正则表达式,但这是一个选项。

基于LINQ的方法:

 string data = "TestStringData"; var converted = data.Select(x => Char.IsUpper(x) ? String.Concat(" ", x) : x.ToString()); var singleString = converted.Aggregate((a, b) => a + b);