一下是小弟将网上的东西拿过来稍微加工了下的成果,不过有个bug就是虽然能找出忽略大小写匹配的字符,但是却将大写改成小写了,不过我找出办法改掉这个bug
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text.RegularExpressions;
using System.Web.UI.HtmlControls;
namespace Component_Select_System
{
/// <summary>
/// 关键字高亮,支持多关键字匹配,支持忽略大小写匹配
/// </summary>
public class HighLight
{
/// <summary>
/// 单个关键字匹配,不区分大小写
/// </summary>
/// <param name="input">原始内容</param>
/// <param name="keyword">关键字</param>
/// <returns>string</returns>
public static string HighLightKeyWord(string input, string keyword)
{
//搜索关键词高亮函数By JN 2006.11.30
System.Text.RegularExpressions.MatchCollection m = Regex.Matches(input, keyword, RegexOptions.IgnoreCase);
//忽略大小写搜索字符串中的关键字
for (int j = 0; j < m.Count; j++)//循环在匹配的子串前后插东东
{
//j×31为插入html标签使input字符串增加的长度:
input = input.Insert((m[j].Index + keyword.Length + j * 31), "</font>");//关键字后插入html标签
input = input.Insert((m[j].Index + j * 31), "<font color=#ff0000>");//关键字前插入html标签
}
//搜索关键词高亮函数By JN 2006.11.30
return input;
}
/// <summary>
/// 替换关键字为红色,不区分大小写
/// </summary>
/// <param name="input">原始内容</param>
/// <param name="k">关键字,支持多关键字</param>
/// <returns>String</returns>
/// <author>visionsky</author>
public static string Highlightkeywordss(string input, string keywords)
{
string resultstr = input;
if (keywords.Trim().IndexOf(' ') > 0)
{
string[] myArray = keywords.Split(' ');
for (int i = 0; i < myArray.Length; i++)
{
MatchCollection mc = Regex.Matches(resultstr, myArray[i].ToString(), RegexOptions.IgnoreCase);
for (int j = 0; j < mc.Count; j++)
{
resultstr = resultstr.Replace(mc[j].ToString(), "<font color=#FF0000>" + mc[j].ToString() + "</font>");
}
}
return resultstr;
}
else
{
MatchCollection mc = Regex.Matches(resultstr, keywords.ToString(), RegexOptions.IgnoreCase);
for (int j = 0; j < mc.Count; j++)
{
resultstr = resultstr.Replace(mc[j].ToString(), "<font color=#FF0000>" + mc[j].ToString() + "</font>");
}
return resultstr;
}
}
/// <summary>
/// 替换关键字为红色 ,区分大小写
/// </summary>
/// <param name="input">原始内容</param>
/// <param name="k">关键字,支持多关键字</param>
/// <returns>String</returns>
/// <author>haver Guo</author>
public static string Highlightkeywords(string input, string keywords)
{
string resultstr = input;
if (keywords.Trim().IndexOf(' ')>0)
{
string[] myArray = keywords.Split(' ');
for (int i = 0; i < myArray.Length; i++)
{
resultstr = input.Replace(myArray[i].ToString(), "<font color=#FF0000>" + myArray[i].ToString() + "</font>");
}
return input;
}
else
{
return input.Replace(keywords, "<font color=#FF0000>" + keywords + "</font>");
}
}
}
}