2011-08-09 7 views

Odpowiedz

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

Bez regex:

var s = "MyUnsolvedProblem"; 
var result = string.Concat(s.Select(c => char.IsUpper(c) ? " " + c.ToString() : c.ToString())) 
    .TrimStart(); 
5
resultString = Regex.Replace("MyUnsolvedProblem", "([a-z])([A-Z])", "$1 $2"); 
1

mogę zaoferować sugestię jak to zrobić w C# czy to pomaga:

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()); 

Jestem pewien, że istnieje sposób to zrobić za pomocą wyrażeń regularnych, ale jest to jedna z opcji.

1

LINQ podejście oparte:

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