using System.Collections.Generic;
public static void Main()
var input = "MyFavouriteChocIsDARKChocalate";
var split = SplitOnCaps(input);
Console.WriteLine(input + " --> " + split);
var match = "My Favourite Choc Is DARK Chocalate";
Console.WriteLine(split == match ? "Match" : "No Match");
public static string SplitOnCaps(string s)
var splits = new List<int>();
var chars = s.ToCharArray();
for(var i=1; i<chars.Length-1; i++)
if (IsCapital(chars[i]) && !IsCapital(chars[i+1]) ||
IsCapital(chars[i]) && !IsCapital(chars[i-1]))
var sb = new StringBuilder();
foreach(var split in splits)
sb.Append(s.Substring(lastSplit, split - lastSplit) + " ");
sb.Append(s.Substring(lastSplit));
public static bool IsCapital(char c)