扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
要使用正则表达式,首先需要引用命名空间:
以下是引用片段: using System.Text.RegularExpressions; |
然后,非常简单,使用:
以下是引用片段: Regex.Replace(字符串,要替换的子串,替换子串的字符,RegexOptions.IgnoreCase) |
就可以达到目的了,其中最后的参数RegexOptions.IgnoreCase即为指明忽略大小写
但是,我现在要为一组字符串中的所有匹配的子字符串加上高亮显示(就是让它的字体样式和字符串其它的部分不一样),用下面的语句在字符串两端插入html标签,确实可以实现高亮,但高亮显示的就成了搜索子串的搜索字符串了,大小写与原文有差异。
打个比方:我在"第十三种Asp.net实现"中搜索的keyString为"asp",替换后的字符串就成了"第十三种asp.net实现",而不是希望的"第十三种Asp.net实现"
以下是引用片段: DocumentResume[i]=Regex.Replace(hitDoc.Get("resume"),keyString,""+keyString+"",RegexOptions.IgnoreCase); |
所以,直接用正则表达式的Replace也不能达到我的需要,而要用到正则表达式的Match搜索方法(Match搜索单条,Matchs多条),然后在匹配的子串前后插入html标签,具体看下面的代码:
以下是引用片段: string pain=hitDoc.Get("resume");//字符串 System.Text.RegularExpressions.MatchCollection m= Regex.Matches(pain,keyString,RegexOptions.IgnoreCase);//忽略大小写搜索字符串中的关键字 for(int j=0;j { //j×31为插入html标签使pain字符串增加的长度,注意下面两句不能交换位置,否则将出现HTML标签插入错误。 pain=pain.Insert((m[j].Index+keyString.Length+j*31),"");//关键字后插入html标签 pain=pain.Insert((m[j].Index+j*31),"");//关键字前插入html标签 } |
当然,html标签也不是胡乱插好了就管用的。还要在要显示这个插完后的字符串的页面代码的head区加入下面的自定义样式
以下是引用片段: <STYLE type=text/css> <!-- .Highlight { color: #00FFFF; font-style: italic; font-size: larger; } --> </STYLE> |
nutian:但正则表达式方式忽略大小写替换应该效率不是最高,但也不是最低,一般
濠碘€冲€归悘澶愬箖閵娾晜濮滈悽顖涚摃閹烩晠宕氶崶鈺傜暠闁诡垰鍘栫花锛勬喆椤ゅ弧濡澘妫楅悡娆撳嫉閳ь剟寮0渚€鐛撻柛婵呮缁楀矂骞庨埀顒勫嫉椤栨瑤绻嗛柟顓у灲缁辨繈鏌囬敐鍕杽閻犱降鍨藉Σ鍕嚊閹跺鈧﹦绱旈幋鐐参楅柡鍫灦閸嬫牗绂掔捄铏规闁哄嫷鍨遍崑宥夋儍閸曨剚浠樺ù锝嗗▕閳ь剚鏌ㄧ欢鐐寸▕鐎b晝顏遍柕鍡嫹