读书人

搜索后的关键字高亮显示(急)100分,该

发布时间: 2012-01-16 23:36:51 作者: rapoo

搜索后的关键字高亮显示(急)100分
一个字符串如:str = "<p>依据季节变化和茶树新梢生长的间歇<a href='#?id=2008'>年份2008</a>平常清明过后春茶开始大</p>"
我现在只想找到非html代码中的2008,并高亮显示,效果如下:
str = "<p>依据季节变化和茶树新梢生长的间歇<a href='#?id=2008'>年份<label class='sr_word01'>2008</label></a>平常清明过后春茶开始大</p>"

如果用 str..Replace("2008","<label class='sr_word01'>2008</label>") 就会把链接地址的参数id=2008中的2008也替换掉了。

如何才能实现?请高手指点

[解决办法]
InnerText;
[解决办法]
用正则表达市啊

[解决办法]
Function ReplaceTest( strPatrn, ItemInfo )
Dim regEx
Dim str
Dim patrnArry
Dim patrn
Dim replStr
Dim nRTCount
Dim nArrayCount

str = ""
patrn = ""
replStr = ""
nArrayCount = 1

patrnArry = split( strPatrn, " " )

For nRTCount = 0 To UBound( patrnArry )
If IsEmptyString( Trim( patrnArry( nRTCount ) ) ) = false Then
replStr = replStr & "<font color='red'>$" & nArrayCount & "</font>"
nArrayCount = nArrayCount + 1
End If
Next

For nRTCount = 0 To UBound( patrnArry )
If IsEmptyString( Trim( patrnArry( nRTCount ) ) ) = false Then
patrn = patrn & "(" &Trim( patrnArry( nRTCount ) ) & ")|"
End If
Next

patrn = mid( patrn, 1, len( patrn ) - 1 )

Set regEx = New RegExp
regEx.Pattern = patrn
regEx.IgnoreCase = True
regEx.Global = True
ReplaceTest = regEx.Replace(ItemInfo, replStr)

End Function
[解决办法]

C# code
#region 返回搜索红色关键词 replacered    public static string replacered(string title, string redkey)    {        title = title.Replace(redkey, "<font color='#ff0000'>" + redkey + "</font>");        return title;    }    #endregion
[解决办法]
探讨
引用:
C# code
#region 返回搜索红色关键词 replacered
public static string replacered(string title, string redkey)
{
title = title.Replace(redkey, " <font color='#ff0000'>" + redkey + " </font>");
return title;
}
#endregion


<%# Member.replacered(Eval("aAbout").ToString(),keyword) %>

[解决办法]
帮顶
[解决办法]
HTML code
<html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server">    <title>无标题页</title></head><body>    <form id="form1" runat="server">    <div>    <a href='#?id=2008' id="a1">年份2008</a>    <script>    document.getElementById("a1").innerHTML=document.getElementById("a1").innerHTML.replace("2008","<font color='red'>2008</font>");    </script>    </div>    </form></body></html>
[解决办法]
帮助楼主顶一下,顺便自己也学习一下,o(∩_∩)o...
[解决办法]
学习了....


[解决办法]
我刚做好这个效果
http://search.rrsou.com/search.aspx?k=%e8%a3%85%e4%bf%ae&p=1
[解决办法]
这种运用好难
[解决办法]
我搜索的高亮不是你说的,那我新闻系统的高亮是不是你说的那种啊
http://www.rrsou.com/news.aspx?id=7679&page=1
[解决办法]
帮顶
[解决办法]
你说的那种情况,我觉得可以先把

"<p>依据季节变化和茶树新梢生长的间歇 <a href='#?id=2008'>年份 <label class='sr_word01'>2008 </label> </a>平常清明过后春茶开始大 </p>"

替换成

"##1依据季节变化和茶树新梢生长的间歇 ##2年份 ##32008 ##4 ##5平常清明过后春茶开始大 ##6"

然后你用replace来转换

最后再把##1 ##2 ##3....恢复过来,之前先用正则把html代码<....>都找出来放在一个string数组里

能看明白吧.
[解决办法]

探讨
C# code
#region 返回搜索红色关键词 replacered
public static string replacered(string title, string redkey)
{
title = title.Replace(redkey, "<font color='#ff0000'>" + redkey + "</font>");
return title;
}
#endregion





<%# Member.replacered(Eval("aAbout").ToString(),keyword) %>

[解决办法]
string AV2Color(string tmpStr)
{
string reValue = tmpStr;
string xingcheng = @"([a-zA-Z]{6} )";
reValue = Regex.Replace(reValue, xingcheng, "<font color=yellow>$1</font>");
}
[解决办法]
关注
[解决办法]
HTML code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>Untitled Document</title><style type="text/css"><!--.adKeyword { color: #FF0000;}--></style></head><body><a href='#?id=2008'>年份 <label class='sr_word01'>2008 </label> </a></body></html><script language="JavaScript" type="text/javascript"><!--if(document.createRange){ var range = document.createRange();}else var range = document.body.createTextRange();  if(range.findText){ while(range.findText("2008")) {  range.pasteHTML(range.text.fontcolor("red"));  range.collapse(true); }}else{  var s,n; s = window.getSelection();   while(window.find("2008")) {  var n = document.createElement("SPAN");  n.style.color="red"   s.getRangeAt(0).surroundContents(n); }  }//--></script>
[解决办法]
本人赞同用正则表达式解决这个问题,只要搜索到“>[N个字符]2008”,就可以替换掉楼主想要的,具体的字符串模型不是很清楚。好像是">\s2008",呵呵
[解决办法]
关注!!!
帮你顶!!
[解决办法]
正则可以用这样的



string s = "<a href='#?id=2008'>年份 <label class='sr_word01'>2008 </label> </a>";
string r = @"(>[ \s\S]*)(2008)([ \s\S]*<)";
string v = Regex.Replace(s, r, "$1<font color=red>$2</font>$3");
Response.Write(v);
[解决办法]
用js吧 这里推荐给你个高亮jquery plugin
http://hi.baidu.com/freezesoul/blog/item/75b05166b197c920ab184cb7.html
[解决办法]
http://blog.csdn.net/kongwei521/archive/2008/03/03/2142799.aspx我转载的一篇文章
你看看符合不符合你。
[解决办法]
ding
ding

[解决办法]
顶你了.

读书人网 >asp.net

热点推荐