将Pascal-case字符串拆分为逻辑单词集

Jos*_*shL 6 c# regex string

我想拿一个像"CountOfWidgets"这样的pascal-cased字符串,并将其转换为更加用户友好的东西,如C#中的"小部件数量".多个相邻的大写字符应保持不变.最有效的方法是什么?

注意:重复的.NET - 如何将"大写"分隔的字符串拆分为数组?

Cri*_*rdo 15

不知道效率,但至少它是简洁的:

Regex r = new Regex("([A-Z]+[a-z]+)");
string result = r.Replace("CountOfWidgets", m => (m.Value.Length > 3 ? m.Value : m.Value.ToLower()) + " ");
Run Code Online (Sandbox Code Playgroud)