以前做关键字高亮都是直接使用replace方法直接替换
如
string input="AAbCC";
string keyword="b";
input=input.ToUpp();
keyword=keyword.ToUpp();
s=s.Replace(keyword,"<font>"+keyword+"</font>");
如果这样
输出: "AABCC"
可以发现B已经被转换成大写形式了.
在网上找了很多没有找到解决问题根本的方法,找到一个使用正则表达式做的,
个人觉得在for循环里面使用正则表达式相当耗费性能.
于是乎自己写了一个 , 代码如下
/// <summary>
/// 高亮关键字
/// </summary>
/// <param name="input">输入的字符串</param>
/// <param name="keyword">需要高亮的关键字</param>
/// <param name="color">高亮的颜色 默认值:#ff0000</param>
/// <returns></returns>
public static string HighLightKeyWord(string input, string keyword, string color)
{
color = color == "" ? "#ff0000" : color;
string input2 = input.ToUpper();
string keyword2 = keyword.ToUpper();
int l = 0;
while (true)
{
int input2IndexOf = input2.IndexOf(keyword2);
if (input2IndexOf <= -1)
break;
input = input.Insert(input2IndexOf + l, "<font color='" + color + "'>").Insert(input2IndexOf + keyword2.Length + 15 + color.Length + l, "</font>");
input2 = input2.Remove(input2IndexOf, keyword2.Length);
l = keyword2.Length + l + 22 + color.Length;
}
return input;
}
虽然很简单的实现原理,但是网上并无此类解决方式,特此贴出共享.