专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »DotNet » 正则表达式替换:C#中正则表达式进行忽略大小写的字符串替换 »正文

正则表达式替换:C#中正则表达式进行忽略大小写的字符串替换

来源: 发布时间:星期三, 2008年9月10日 浏览:173次 评论:0
在C#里要进行忽略大小写的字符串替换,用string的Replace是很难做到的,即使花了天大的力气做到了,效率仍然是很低的,正确的方法应该是使用正则表达式。

要使用正则表达式,首先需要引用命名空间:
usingSystem.Text.RegularExpressions;

然后,非常简单,使用:
Regex.Replace(字符串,要替换的子串,替换子串的字符,RegexOptions.IgnoreCase)

就可以达到目的了,其中最后的参数RegexOptions.IgnoreCase即为指明忽略大小写

但是,我现在要为一组字符串中的所有匹配的子字符串加上高亮显示(就是让它的字体样式和字符串其它的部分不一样),用下面的语句在字符串两端插入html标签,确实可以实现高亮,但高亮显示的就成了搜索子串的搜索字符串了,大小写与原文有差异。

打个比方:我在\"第十三种Asp.net实现\"中搜索的keyString为\"asp\",替换后的字符串就成了\"第十三种<spanclass=\"Highlight\">asp</span>.net实现\",而不是希望的\"第十三种<spanclass=\"Highlight\">Asp</span>.net实现\"
DocumentResume[i]=Regex.Replace(hitDoc.Get(\"resume\"),keyString,\"<spanclass=\\\"Highlight\\\">\"+keyString+\"</span>\",RegexOptions.IgnoreCase);


所以,直接用正则表达式的Replace也不能达到我的需要,而要用到正则表达式的Match搜索方法(Match搜索单条,Matchs多条),然后在匹配的子串前后插入html标签,具体看下面的代码:
stringpain=hitDoc.Get(\"resume\");//字符串
System.Text.RegularExpressions.MatchCollectionm=Regex.Matches(pain,keyString,RegexOptions.IgnoreCase);//忽略大小写搜索字符串中的关键字
for(intj=0;j<m.Count;j++)//循环在匹配的子串前后插东东
{
//j×31为插入html标签使pain字符串增加的长度,注意下面两句不能交换位置,否则将出现HTML标签插入错误。
pain=pain.Insert((m[j].Index+keyString.Length+j*31),\"</span>\");//关键字后插入html标签
pain=pain.Insert((m[j].Index+j*31),\"<spanclass=\\\"Highlight\\\">\");//关键字前插入html标签
}

当然,html标签也不是胡乱插好了就管用的。还要在要显示这个插完后的字符串的页面代码的head区加入下面的自定义样式
<STYLEtype=text/css>
<!--.Highlight{
color:#00FFFF;
font-style:italic;
font-size:larger;
}-->
</STYLE>

nutian:但正则表达式方式忽略大小写替换应该效率不是最高,但也不是最低,一般应用应该可以.
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: