Ответ 1

Если вы хотите, чтобы он был динамическим, то есть каждый раз, когда вы находите письмо в верхнем регистре, разделите его на части, я не считаю, что это встроено, но может быть неправильным; достаточно просто написать метод расширения.

string output = "";

foreach (char letter in str)
{
   if (Char.IsUpper(letter) && output.Length > 0)
     output += " " + letter;
   else
     output += letter;
}

Ответ 2

        string s = "TopLeft";
        List<int> splits = new List<int>();
        for(int i=0; i<s.Length;i++)
            if(char.IsUpper(s[i]))
                splits.Add(i);

        int splitstart = 0;
        foreach (int split in splits)
        {
            s.Substring(splitstart, split);
            splitstart = split;
        }