【问题标题】:Split a Pascal-case string into logical set of words [duplicate]将 Pascal-case 字符串拆分为逻辑单词集[重复]
【发布时间】:2008-11-14 23:48:26
【问题描述】:

我想采用帕斯卡大小写的字符串,例如“CountOfWidgets”,并将其转换为更用户友好的内容,例如 C# 中的“Count of Widgets”。多个相邻的大写字符应保持不变。最有效的方法是什么?

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

【问题讨论】:

  • 这不是一个重复的问题,因为链接到的答案不适合“多个相邻的大写字符应保持不变”

标签: c# regex string


【解决方案1】:

不知道高效,但至少它很简洁:

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

【讨论】:

  • 这会在 "FormatRange" -> "FormatRange" 的末尾留下一个空格 - 所以修剪会很有用,并且检查长度为 3 是确保“应该留下多个相邻的大写字母”的不可靠方法完好无损的”。这只是希望留下少于 3 个字符的内容。所以“PubID”转到“publ ID”,这是不对的
猜你喜欢
  • 2014-10-21
  • 1970-01-01
  • 2011-06-12
  • 1970-01-01
  • 2014-06-09
  • 2019-11-01
  • 2018-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多