Задача простая, как ее решить алгоритмически я понимаю, но не очень силен в регулярках.
Надо в текстовой строке заменить все множественные пробельные символы на один пробел, а потом для всех слов состоящих менее чем из четырех символов заменить следующий за ними пробел на конструкцию " " (то есть привязать такие слова к следующим за ними словам неразрывным пробелом).
Вот как это выглядит у меня в классике:
public static string TyporgafMin(
this string source)
{
if (string.IsNullOrEmpty(source))
return string.Empty;
var a1 = source.Split(' ', StringSplitOptions.RemoveEmptyEntries);
var sb = new StringBuilder();
foreach (var w1 in a1.SkipLast(1))
if (w1.Length < 4)
sb.Append($"{w1} ");
else
sb.Append($"{w1} ");
sb.Append(a1.Last());
return sb.ToString();
}
Но на regex, вероятно, будет проще и изящнее...