C# 如何使用正则表达式用小写替换大写?
我需要用小写字母替换变量名中的大写字母,并添加空格 例如:C# 如何使用正则表达式用小写替换大写?,c#,regex,C#,Regex,我需要用小写字母替换变量名中的大写字母,并添加空格 例如: NotImplementedException应该是未实现异常 UnhandledException应该是UnhandledException因为您没有指定语言,我将用C#给出一个例子。我相信你的语言会提供类似的东西 String s = "NotImplementedException"; s = Regex.Replace(s, @"\B[A-Z]", m => " " + m.ToString().ToLower()); /
NotImplementedException
应该是未实现异常
UnhandledException
应该是UnhandledException
因为您没有指定语言,我将用C#给出一个例子。我相信你的语言会提供类似的东西
String s = "NotImplementedException";
s = Regex.Replace(s, @"\B[A-Z]", m => " " + m.ToString().ToLower());
// s = "Not implemented exception"
@伊格纳西奥,我不敢苟同。当然,这不是用普通正则表达式在一条语句中就能完成的。但是sed命令:
sed -e 's/\([a-zA-Z]\)C/\1 c/g' infile.txt
当“C”前面紧跟字母时,将所有出现的“C”替换为“C”。OP所要做的就是做26个变种,这可能会很乏味。获取改变大小写的条件可能也很困难,但使用正则表达式进行全局搜索和替换总是如此。可以在sed中通过单个命令完成:
$ echo "NotImplementedException" | sed 's/\B[A-Z]/ \l&/g'
Not implemented exception
但是对
\l
(和\u
,\l
,\u
和\E
)的支持在不同语言的正则表达式实现中很少。我只确定Perl已经实现了这一点。是用什么编程语言实现的?大多数情况下,单靠正则表达式是不允许这样做的,您需要在occurrencelanguage是C#上运行一些代码,但我需要正则表达式:(您需要使用正则表达式有什么特别的原因吗?大多数时候,人们问这类问题时,都是在假设他们需要的答案的类型。因为regex是配置参数,系统是活动的,我需要在不安装新的version@AndrewAylett这个问题对我很有用(尽管缺少实际答案并非如此)因为我使用的是VS search/replace,它使用相同的正则表达式。这将避免大量的“重复查找,转换大小写”击键序列。此答案的更好的C版本将支持任何大写字母(即使是重音字母):String s=“NotImplementedException”;s=Regex.Replace(s,@“\B\p{Lu}”,m=>”+m.ToString().ToLower());
这是一个严肃的回答,还是你只是在和Ignacio争论?