发布网友
发布时间:2023-01-12 18:48
共1个回答
热心网友
时间:2023-07-11 05:23
在C#里要进行忽略大小写的字符串替换 用string的Replace是很难做到的 即使花了天大的力气做到了 效率仍然是很低的 正确的方法应该是使用正则表达式
要使用正则表达式 首先需要引用命名空间
以下是引用片段 using System Text RegularExpressions;
然后 非常简单 使用
以下是引用片段 Regex Replace(字符串 要替换的子串 替换子串的字符 RegexOptions IgnoreCase)
就可以达到目的了 其中最后的参数RegexOptions IgnoreCase即为指明忽略大小写
但是 我现在要为一组字符串中的所有匹配的子字符串加上高亮显示(就是让它的字体样式和字符串其它的部分不一样) 用下面的语句在字符串两端插入标签 确实可以实现高亮 但高亮显示的就成了搜索子串的搜索字符串了 大小写与原文有差异
打个比方 我在 第十三种实现 中搜索的keyString为 asp 替换后的字符串就成了 第十三种 实现 而不是希望的 第十三种 实现
以下是引用片段 DocumentResume[i]=Regex Replace(hitDoc Get( resume ) keyString +keyString+ RegexOptions IgnoreCase);
所以 直接用正则表达式的Replace也不能达到我的需要 而要用到正则表达式的Match搜索方法(Match搜索单条 Matchs多条) 然后在匹配的子串前后插入标签 具体看下面的代码
以下是引用片段 string pain=hitDoc Get( resume );//字符串 System Text RegularExpressions MatchCollection m= Regex Matches(pain keyString RegexOptions IgnoreCase);//忽略大小写搜索字符串中的关键字 for(int j= ;j { //j× 为插入标签使pain字符串增加的长度 注意下面两句不能交换位置 否则将出现HTML标签插入错误 pain=pain Insert((m[j] Index+keyString Length+j* ) );//关键字后插入标签 pain=pain Insert((m[j] Index+j* ) );//关键字前插入标签 }
[NextPage] 当然 标签也不是胡乱插好了就管用的 还要在要显示这个插完后的字符串的页面代码的head区加入下面的自定义样式
以下是引用片段 <STYLE type=text/css> <! Highlight { color: # FFFF; font style: italic; font size: larger; } > </STYLE>
[NextPage] nutian:但正则表达式方式忽略大小写替换应该效率不是最高,但也不是最低,一般应用应该可以.
当然,标签也不是胡乱插好了就管用的。Tw.WINgwit.Com还要在要显示这个插完后的字符串的页面代码的head区加入下面的自定义样式
以下是引用片段:<STYLE type=text/css> <!-- .Highlight { color: #00FFFF; font-style: italic; font-size: larger; } --> </STYLE>
lishixin/Article/program/net/201311/12465