用户搜索多个关键词的时候,出现用户搜索关键字标红。
如果全部都是中文 可以用Replace来标红 
比如 
Replace("中国", "<font color='red'>中国</font>");
还有另一种可能 用户输入英文关键词
比如
English color
 
这样
Replace("English ", "<font color='red'>English </font>");
但是替换color的时候可能替换 font里边的color 如何解决
或者关键词为 font  或者任何<font color='red'>一个字母
谢谢

解决方案 »

  1.   


            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;
            }
      

  2.   

    也可以先把那些<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;
            }
      

  3.   

    循环替换
    #@表示<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>");
    谢谢结贴