[转载]C#正则表达式(RegEx)高级应用之分组(Group)替换(Replace)
今天遇到个需求,动态读取实体类属性,然后把属性名的每个单词第一个大写字母用空格替换填充占位。接着把这个属性名列表放在网页的table-->thead里,而属性值则放在table-->tbody里。
简单来说,就是把实体数据列表动态转换为HTML里的table。
举例:
TotalPrice,TotalQty,FileName。
占位后:
Total Price,Total Qty,File Name.
C#代码:
Regex reg = new Regex("(\\B[A-Z])"); IList<IDictionary<string, object>> list = xxxxx; IDictionary<string, object> detail = list.First(); foreach (var kv in detail) { string name = reg.Replace(kv.Key," $1"); }
Javascript代码:
var reg = /(\B[A-Z])/g; for (var key in detail) { string name = "<th>" + key.replace(reg, " $1") + "</th>"; }
原文:
今天,说一下 .NET 里面 正则 使用的稍微高级一些的技巧:分组替换 ,下面我们举两个实例来说明这个问题:
一段字符串,把其中出现的 Ax,Ay 形式的内容,替换为 Ax 的形式(也就是 ,和Ay 都不要了),其中x 和y是数字,位长是 1~2,并且不会出现连排的形式
对于上面的需求,我们进行分析后,可以得出:上面的匹配规则,分为2组,(Ax) 一组,(,Ay) 一组 匹配后,直接返回第一组就OK了
对于.NET来说,分组替换的实现,有多种方式,我这里展示其中的2种,对于上面的例子,我使用 MatchEvaluator 方式
static string CustomReplace(System.Text.RegularExpressions.Match m) { return m.Groups[1].Value; //直接返回分组1 } string sourceString = "....."; string pattern = @"(A\d{1,2})(,A\d{1,2})"; System.Text.RegularExpressions.MatchEvaluator myEvaluator = new System.Text.RegularExpressions.MatchEvaluator(CustomReplace); System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(pattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase| System.Text.RegularExpressions.RegexOptions.Multiline); string resultString = reg.Replace(sourceString, myEvaluator);
需求是需要对这个FLASH的代码进行自定义,将 宽度 替换为自定义的值
对于这个例子,我们使用分组号 $# 的方式来实现,#代表数字,经过分析,可以得出,将上面的内容,分为3组
string sourceString = "......"; string toWidth = "300"; //自定义的宽度 string pattern = "(; System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(pattern, RegexOptions.IgnoreCase | RegexOptions.Multiline); string resultString = reg.Replace(sourceString, "${1}" + toWidth + "${3}");
为了区分分组编号和普通字符,可以用{}标注分组号
转载自:http://blog.itpub.net/12639172/viewspace-567493/
作者:VAllen
出处:http://www.cnblogs.com/vallen
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
唯有偏执者得以生存。
出处:http://www.cnblogs.com/vallen
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
唯有偏执者得以生存。