我想将像“CountOfWidgets”这样的帕斯卡命名字符串转换为更加用户友好的形式,例如C#中的“Count of Widgets”。多个相邻的大写字符应保持不变。最有效的方法是什么?
注意:重复的问题,请参见.NET - How can you split a "caps" delimited string into an array?。
虽然不知道是否高效,但至少很简洁:
Regex r = new Regex("([A-Z]+[a-z]+)");
string result = r.Replace("CountOfWidgets", m => (m.Value.Length > 3 ? m.Value : m.Value.ToLower()) + " ");