.NET RegEx可以在没有.ToUpper()的情况下大写字母吗?

时间:2015-03-13 19:33:20

标签: c# .net regex adfs

我正在尝试使用ADFS Claims Rule Language执行一项简单的任务:将一些文本大写。语言具有常见的字符串操作方法,如.ToUpper(),但 使用.NET正则表达式具有Regex.Replace宏。

可悲的是,.NET正则表达式不支持Perl's \U operator,它可以很好地完成这项工作(例如s/[a-z]/\U\1/g)。

普通Regex.Replace(string, string, string)命令有没有办法可以使用.ToUpper()之类的大写字母

3 个答案:

答案 0 :(得分:2)

Substitutions in Regular Expressions。仅支持以下替换元素:$number${name}$$$&$`$'$+$_。你无法转换元素,使用条件或类似的东西。

答案 1 :(得分:-1)

我不知道在.NET中的表达式中使用它的简单方法,但您可以在调用Regex.Replace()时使用MatchEvaluator lambda,类似于此处描述的内容:

How to uppercase the first character of each word using a regex in VB.NET?

答案 2 :(得分:-2)

正如科林所说,MatchEvaluator是你最好的选择。你可以做这样的事情来大写一个陈述的第一个字母:

var s = System.Text.RegularExpressions.Regex.Replace
        ("capitalise the first letter of this sentence.", "(.*)", 
        delegate(System.Text.RegularExpressions.Match m) {
                        return (m.Value.Length > 0 ? m.Value.Substring
        (0, 1).ToUpper() : "") + (m.Value.Length > 1 ? m.Value
        .Substring(1, m.Value.Length-1) : "");
                    });