Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用正则表达式用小写替换大写?_C#_Regex - Fatal编程技术网

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争论?