I'm trying to find an efficient way to take an input string and capitalize the first letter after every punctuation mark (`. : ? !`) which is followed by a white space.

Input: 

> 
> "I ate something. but I didn't:
>  instead, no. what do you think? i
>  think not! excuse me.moi"
> 
> 
> 

Output: 

> 
> "I ate something. But I didn't:
>  Instead, no. What do you think? I
>  think not! Excuse me.moi"
> 
> 
> 

The obvious would be to split it and then capitalize the first char of every group, then concatenate everything. But it's uber ugly. What's the best way to do this? (I'm thinking `Regex.Replace` using a `MatchEvaluator` that capitalizes the first letter but would like to get more ideas)

Thanks!