.net 关键字标红问题

zhengliyan_star 2011-05-24 08:50:20
用户搜索多个关键词的时候,出现用户搜索关键字标红。
如果全部都是中文 可以用Replace来标红
比如
Replace("中国", "<font color='red'>中国</font>");
还有另一种可能 用户输入英文关键词
比如
English color

这样
Replace("English ", "<font color='red'>English </font>");
但是替换color的时候可能替换 font里边的color 如何解决
或者关键词为 font 或者任何<font color='red'>一个字母
谢谢
...全文
236 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bloodyGhost 2011-05-24
  • 打赏
  • 举报
回复
这帖子怎么就接了呢?
我姓区不姓区 2011-05-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhengliyan_star 的回复:]

循环替换
#@表示<font color='red'>,&*表示</font>
entity.Info1=entity.Info1.Replace(arr[i].ToString(), "#@" + arr[i].ToString() + "&*");
最后在替换回来
entity.Info1 = entity.Info1.Replace("#@","<fo……
[/Quote]
对,就是这意思
zhengliyan_star 2011-05-24
  • 打赏
  • 举报
回复
循环替换
#@表示<font color='red'>,&*表示</font>
entity.Info1=entity.Info1.Replace(arr[i].ToString(), "#@" + arr[i].ToString() + "&*");
最后在替换回来
entity.Info1 = entity.Info1.Replace("#@","<font color='red'>");
entity.Info1 = entity.Info1.Replace("&*", "</font>");


谢谢结贴

我姓区不姓区 2011-05-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhengliyan_star 的回复:]
这貌似不怎么精确吧。比如用户输入f 或者c ,还得加判断了。
有没有更简单的方法呢。
[/Quote]
2楼的确实不精确,但3楼的可以啊
kingdom_0 2011-05-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ojlovecd 的回复:]

也可以先把那些<font替换成别的,最后在替换回来:
C# code

static void Main(string[] args)
{
string str = "如果<font color='red'>全部</font>color都是中red文 可以用Replace来标font红 ";

Console.W……
[/Quote]学习了。
zhengliyan_star 2011-05-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ojlovecd 的回复:]

也可以先把那些<font替换成别的,最后在替换回来:
C# code

static void Main(string[] args)
{
string str = "如果<font color='red'>全部</font>color都是中red文 可以用Replace来标font红 ";

Console.W……
[/Quote]
这貌似不怎么精确吧。比如用户输入f 或者c ,还得加判断了。
有没有更简单的方法呢。
我姓区不姓区 2011-05-24
  • 打赏
  • 举报
回复
也可以先把那些<font替换成别的,最后在替换回来:

static void Main(string[] args)
{
string str = "如果<font color='red'>全部</font>color都是中red文 可以用Replace来标font红 ";

Console.WriteLine(ReplaceKeyWord(str, "可以"));
Console.WriteLine(ReplaceKeyWord(str, "font"));
Console.WriteLine(ReplaceKeyWord(str, "red"));
Console.WriteLine(ReplaceKeyWord(str, "color"));
}

static string ReplaceKeyWord(string str, string key)
{
string temp = str.Replace("<font color='red'>", "ojlovecd").Replace("</font>", "cdloveoj");
string result = temp.Replace(key, "<font color='red'>" + key + "</font>").Replace("ojlovecd", "<font color='red'>").Replace("cdloveoj", "</font>");

return result;
}

我姓区不姓区 2011-05-24
  • 打赏
  • 举报
回复

static void Main(string[] args)
{
string str = "如果<font color='red'>全部</font>color都是中red文 可以用Replace来标font红 ";
Console.WriteLine(ReplaceKeyWord(str, "可以"));
Console.WriteLine(ReplaceKeyWord(str, "font"));
Console.WriteLine(ReplaceKeyWord(str, "red"));
Console.WriteLine(ReplaceKeyWord(str, "color"));
}

static string ReplaceKeyWord(string str, string key)
{
string result = "";
if (key.ToLower() == "font")
result = Regex.Replace(str, @"(?is)(font)(?!>|\s+color='red')", "<font color='red'>$1</font>");
else if (key.ToLower() == "color")
result = Regex.Replace(str, @"(?is)(color)(?!='red'>)", "<font color='red'>$1</font>");
else if (key.ToLower() == "red")
result = Regex.Replace(str, @"(?is)(red)(?!'>)", "<font color='red'>$1</font>");
else
result = str.Replace(key, "<font color='red'>" + key + "</font>");
return result;
}

zhengliyan_star 2011-05-24
  • 打赏
  • 举报
回复
谢谢,请高手指点一下

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧