我正在尝试使用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()
之类的大写字母?
答案 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) : "");
});