在C#里要进行忽略大小写的字符串替换,用string的Replace是很难做到的,即使花了天大的力气做到了,效率仍然是很低的,正确的方法应该是使用正则表达式。
要使用正则表达式,首先需要引用命名空间:
using System.Text.RegularExpressions; |
然后,非常简单,使用:
Regex.Replace(字符串,要替换的子串,替换子串的字符,RegexOptions.IgnoreCase) |
就可以达到目的了,其中最后的参数RegexOptions.IgnoreCase即为指明忽略大小写
但是,我现在要为一组字符串中的所有匹配的子字符串加上高亮显示(就是让它的字体样式和字符串其它的部分不一样),用下面的语句在字符串两端插入html标签,确实可以实现高亮,但高亮显示的就成了搜索子串的搜索字符串了,大小写与原文有差异。
打个比方:我在"第十三种Asp.net实现"中搜索的keyString为"asp",替换后的字符串就成了"第十三种<span class="Highlight">asp</span>.net实现",而不是希望的"第十三种<span class="Highlight">Asp</span>.net实现"
DocumentResume[i]=Regex.Replace(hitDoc.Get("resume"),keyString,"<span class=\"Highlight\">"+keyString+"</span>",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<m.Count;j++)//循环在匹配的子串前后插东东 {
//j×31为插入html标签使pain字符串增加的长度: pain=pain.Insert((m[j].Index+keyString.Length+j*31),"</span>");//关键字后插入html标签 pain=pain.Insert((m[j].Index+j*31),"<span class=\"Highlight\">");//关键字前插入html标签 }
|
当然,html标签也不是胡好了就管用的。还要在要显示这个插完后的字符串的页面代码的head区加入下面的自定义样式
<STYLE type=text/css> <!-- .Highlight { color: #00FFFF; font-style: italic; font-size: larger; } --> </STYLE> |
相关推荐
i (忽略大小写) m (多行查找) vaScript动态正则表达式问题 请问正则表达式可以动态生成吗? 例如JavaScript中: var str = "strTemp"; 要生成: var re = /strTemp/; 如果是字符连接: var re = "/" + str + ...
符下两ows表研究室的火热,当晨在“@”虽然并非C#正则表达式的“成员”,但是它经常与C#正则表达式出双入对。“@”表示,跟在它后面的字符串是个“逐字字符串”,不是很好理解,举个例子,以下两个声明是等效的: ...
3.6 检查正则表达式能否整个匹配目标字符串 3.7 获取匹配文本 3.8 决定匹配的位置和长度 3.9 获取匹配文本的一部分 3.10 获取所有匹配的列表 3.11 遍历所有匹配 3.12 在过程代码中对匹配结果进行验证 3.13 在另一个...
通常,处理正则表达式的工具会提供一个忽略大小写的选项,如果选中了这个选项,它可以匹配hi,HI,Hi,hI这四种情况中的任意一种。 不幸的是,很多单词里包含hi这两个连续的字符,比如him,history,high等等。用hi来查找...
在编写处理字符串的程序时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。正则表达式拥有一套自己的语法规则,常见语法包括字符匹配... (1)IgnoreCase(忽略大小写) (2)ReghtT
使用构造函数定义正则表达式,注意大小写,负责就会不起作用。由于构造函数的参数是一个字符串,也可以是两个斜杠的方式定义,遇到一些特殊字符就需要使用\进行转义通过双斜杠的方式定义同样的正则表达式 代码如下:...
如果设置了这个修饰符,模式中的字母会进行大小写不敏感匹配。 m (PCRE_MULTILINE) 默认情况下,PCRE 认为目标字符串是由单行字符组成的(然而实际上它可能会包含多行), “行首”元字符 (^) 仅匹配字符串的开始位置...
字符串操作是在编程中对字符串进行...6. 大小写转换(Case Conversion):将字符串中的字符转换为大写或小写。可以使用特定的大小写转换函数或方法来实现。 7. 去除空格(Trim):去除字符串开头和末尾的空格或.....
replace [path/]filename search replace [/option] 替换文本文件中的字符串,支持 通配符文件名 replace setname search replace [/option] 替换参数变量中的字符串 /option参数说明: i 区分大小写....
正如上面说的,正则表达式看起来非常复杂,让人害怕,大多数的PHP初学者都会跳过这里,继续下面的学习,但是PHP中的正则表达式有着可以利用模式匹配找到符合条件的字符串、判断字符串是否合乎条件或者用指定的字符...
C#中使用正则所需要引用的命名空间是 using System.Text.RegularExpressions 它包含了8个类,用得最多是的Regex,Regex不仅...IgnoreCase //是匹配忽略大小写 默认情况区分大小写 RightToLeft //从右到左查找字符串
全书分6篇共25章,主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合的使用、面向对象编程技术、数据结构与算法、Windows窗体基础、特色窗体界面、窗体控制技术、MDI窗体和继承窗体、Windows...
【2】 正则表达式应用——数字替换—————————-Microshaoft,jiuk2k 【3】 正则表达式应用——删除每一行行尾的指定字符 【4】 正则表达式应用——替换带有半角括号的多行 【5】 正则表达式应用——删除空行...
-i:忽略字符大小写 -n:显示匹配的行号 -c:统计匹配的行数 -o:仅显示匹配到的字符串 -q:静默模式,不输出任何信息 -A#:after,后#行 -B#:before,前#行 -C#:context,前后各#行 -e:实现多个选项间的逻辑or关系 grep -e '...
85 <br>0130 复制字符串中指定的字符 85 <br>0131 巧截字符串的数字 86 <br>0132 如何存储变长字符串 86 <br>0133 在进行字符串比较时忽略大小写 87 <br>0134 如何去除字符串尾空格 87 ...
【1】 正则表达式应用——替换指定内容到行尾 【2】 正则表达式应用——数字替换----------------------------Microshaoft@CCF,jiuk2k@CCF 【3】 正则表达式应用——删除每一行行尾的指定字符 【4】 正则表达式应用...
【1】 正则表达式应用——替换指定内容到行尾 【2】 正则表达式应用——数字替换----------------------------Microshaoft@CCF,jiuk2k@CCF 【3】 正则表达式应用——删除每一行行尾的指定字符 【4】 正则表达式应用...