Вы можете разделить слова с помощью регулярного выражения (и небольшого 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;
}
Пример использования:
[Test]
public void Example()
{
string str = SplitAsWords("TheQuickBrownFox");
Assert.That(str, Is.EqualTo("The quick brown fox"));
}
Альтернативной реализацией с использованием регулярного выражения может бытьбез 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;
}