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

C# 从字符串中获取大写字母的索引,c#,.net,regex,string,C#,.net,Regex,String,可能重复: 我有这样一个字符串:MyUnsolvedProblem 我想这样修改字符串:My Unsolved Problem 我该怎么做?我尝试过使用正则表达式,但没有成功 resultString = Regex.Replace("MyUnsolvedProblem", "([a-z])([A-Z])", "$1 $2"); 没有正则表达式: var s = "MyUnsolvedProblem"; var result = string.Concat(s.Select(c =>

可能重复:

我有这样一个字符串:
MyUnsolvedProblem

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

我该怎么做?我尝试过使用正则表达式,但没有成功

resultString = Regex.Replace("MyUnsolvedProblem", "([a-z])([A-Z])", "$1 $2");
没有正则表达式:

var s = "MyUnsolvedProblem";
var result = string.Concat(s.Select(c => char.IsUpper(c) ? " " + c.ToString() : c.ToString()))
    .TrimStart();

如果有帮助的话,我可以提供一个如何在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);
仅获取索引外观
string data = "TestStringData";
var converted = data.Select(x => Char.IsUpper(x) ? String.Concat(" ", x) : x.ToString());
var singleString = converted.Aggregate((a, b) => a + b);