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

时间:2008-11-14 23:48:27

标签: c# regex string

我想采用像“CountOfWidgets”这样的pascal-cased字符串,并将其转换为更易于使用的内容,例如C#中的“Widgets计数”。多个相邻的大写字符应保持不变。最有效的方法是什么?

注意.NET - How can you split a "caps" delimited string into an array?

重复

1 个答案:

答案 0 :(得分:13)

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

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