【问题标题】:C# regex to convert camelCase to Sentence caseC#正则表达式将camelCase转换为Sentence case
【发布时间】:2014-11-20 13:03:23
【问题描述】:

在我的例子中 var key = new CultureInfo("en-GB").TextInfo.(item.Key) 产生,'Camelcase' 我可以添加什么正则表达式,它会在第二个 'c' 之前产生一个空格?

例子:

'camelCase' > '骆驼案'

'itIsTimeToStopNow' > '现在该停下来了'

【问题讨论】:

标签: c# regex


【解决方案1】:

其中一种方法可以做到这一点。

string input = "itIsTimeToStopNow";
string output = Regex.Replace(input, @"\p{Lu}", m => " " + m.Value.ToLowerInvariant());
output = char.ToUpperInvariant(output[0]) + output.Substring(1);

【讨论】:

  • 两个答案都很完美,但我可能会选择这个解决方案。
【解决方案2】:

一种方法是用空格大写字母替换大写字母,然后将第一个字符变为大写:

var input = "itIsTimeToStopNow";

// add spaces, lower case and turn into a char array so we 
// can manipulate individual characters
var spaced = Regex.Replace(input, @"[A-Z]", " $0").ToLower.ToCharArray();

// spaced = { 'i', 't', ' ', 'i', 's', ' ', ... }

// replace first character with its uppercase equivalent
spaced[0] = spaced[0].ToString().ToUpper()[0];

// spaced = { 'I', 't', ' ', 'i', 's', ' ', ... }

// combine the char[] back into a string
var result = String.Concat(spaced);

// result = "It is time to stop now"

【讨论】:

  • 这个答案非常有效,它是第一个并且有解释性说明,所以我投了赞成票。但是,当我将其他解决方案集成到我的页面中时,它似乎使用的代码更少。
猜你喜欢
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 2011-10-02
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
相关资源
最近更新 更多