我想给关键词加个背景颜色
规则如下:比如 “联合卡车” 因为卡车是关键词,联合卡车也是关键词
所以联合卡车和卡车都有背景色,在程序中控制的显示背景色不同,在这里就不要求了
联合卡车和卡车都有一个超链接,如果内容中有"阳光明" 那么就会有不同的背景色,如果这个不好实现,就先读到哪个关键词,就给哪个词加背景了,但是上面哪个包含的一定要实现。希望高人帮我把下面的方法给改了,我这个方法会把联合卡车超链接的title中的卡车也给替换了,所以样式会乱!
没分了,希望有人帮忙,等别的帖子有答案了,结贴后给这个帖子加分!!!
先谢谢大家了
//过滤内容
public static string FilterText(string contents)//contents传入的内容
{
//定义一个关键字的数组
string[] c = new string[] { "联合卡车", "卡车", "东风" ,"阳光","光明"};
//循环数组中的每个元素
for (int i = 0; i < c.Length; i++)
{
//内容中包含关键字
if (contents.Contains(c[i]))
{
//取到关键字开始的位置
int x = contents.IndexOf(c[i]);
//取到关键字的长度
int y = c[i].Length;
//截取出替换前的关键字
string a = contents.Substring(x, y);
//替换后的样式
string v = "<a href=\"#\" title=\""+a+"\">"+a+"</a>";
//把关键字替换掉
contents = contents.Replace(a, v);
}
}
//返回过滤后的内容
return contents;
}
规则如下:比如 “联合卡车” 因为卡车是关键词,联合卡车也是关键词
所以联合卡车和卡车都有背景色,在程序中控制的显示背景色不同,在这里就不要求了
联合卡车和卡车都有一个超链接,如果内容中有"阳光明" 那么就会有不同的背景色,如果这个不好实现,就先读到哪个关键词,就给哪个词加背景了,但是上面哪个包含的一定要实现。希望高人帮我把下面的方法给改了,我这个方法会把联合卡车超链接的title中的卡车也给替换了,所以样式会乱!
没分了,希望有人帮忙,等别的帖子有答案了,结贴后给这个帖子加分!!!
先谢谢大家了
//过滤内容
public static string FilterText(string contents)//contents传入的内容
{
//定义一个关键字的数组
string[] c = new string[] { "联合卡车", "卡车", "东风" ,"阳光","光明"};
//循环数组中的每个元素
for (int i = 0; i < c.Length; i++)
{
//内容中包含关键字
if (contents.Contains(c[i]))
{
//取到关键字开始的位置
int x = contents.IndexOf(c[i]);
//取到关键字的长度
int y = c[i].Length;
//截取出替换前的关键字
string a = contents.Substring(x, y);
//替换后的样式
string v = "<a href=\"#\" title=\""+a+"\">"+a+"</a>";
//把关键字替换掉
contents = contents.Replace(a, v);
}
}
//返回过滤后的内容
return contents;
}
解决方案 »
- vs2010beta2 打开beta1项目的问题
- 如何用readxml读取xml指定数量的记录?
- asp.net(vb脚本)中,如何修改购物车中购买数量
- 为什么我写的带循环的存储过程却不执行循环呢?只执行一句就结束了
- Asp.net基础题目,请大家积极讨论回答:)
- VS2005,在iframe中有一个main.aspx,main.aspx中有一个GridView,点击GridView的每一行的一个安熘,怎样弹出一个300*300 无菜单栏,状态栏的e
- 看看老外都没有解决的问题
- 那位大哥解释一下下面的连接字符串?
- 请问谁有Infragistics NetAdvantage 2008 Vol 3 的开发例子?要免费得
- 学习asp.net2.0 ajax,应该看哪些书?
- 社区论坛框架设计,大家帮忙看一下
- !!!!!!这句话我写的对吗?!!!!!!
{
//定义一个关键字的数组
string[] c = new string[] { "联合卡车", "卡车", "东风" ,"阳光","光明"};
//循环数组中的每个元素
for (int i = 0; i < c.Length; i++)
{
//内容中包含关键字
if (contents.Contains(c[i]))
{
//替换后的样式
string v = "<a href=\"#\" title=\""+c[i]+"\" style=\"background:#ccc\">"+c[i]+"</a>";
//把关键字替换掉
contents = contents.Replace(c[i], v);
}
}
//返回过滤后的内容
return contents;
}
<a href="Default.aspx" title="联合卡车" style="background-color:#FFE6E6">联合<a href="Default2.aspx" title="卡车" style="background-color:#FF0000">卡车</a></a>
{
string p = "";
//定义一个关键字的数组
string[] c = new string[] { "联合卡车", "卡车", "东风", "阳光", "光明" };
//循环数组中的每个元素
for (int i = 0; i < c.Length; i++)
{
//内容中包含关键字
if (contents.Contains(c[i]))
{
p = c[i];
for (int j = 0; j < c[i].Length; j++)
p = p.Insert(j*2, "|");
//替换后的样式
string v = "<a href=\"#\" title=\"" + p + "\" style=\"background:#ccc\">" + c[i] + "</a>";
//把关键字替换掉
contents = contents.Replace(c[i], v);
}
}
for (int i = 0; i < c.Length; i++)
contents = contents.Replace("|", "");
//返回过滤后的内容
return contents;
}
颜色你可以用不同的,自己设下。
for (int i = 0; i < c.Length; i++)
contents = contents.Replace("|", "");
是多余的,改成
contents = contents.Replace("|", "");
就可以了。
string[] c = new string[] { "联合卡车", "卡车", "东风", "阳光", "光明" };
应该改成
string[] c = new string[] { "联合", "卡车", "东风", "阳光", "光明" };这样比较好。。
p = p.Insert(j*2, "|");
这个2是什么意思啊?
谢谢好心人了
/// <summary>
/// 改变关键词的样式
/// </summary>
/// <param name="contents">要改变的内容</param>
/// <param name="dt">条件即关键词集合</param>
/// <returns></returns>
public static string changeStyle(string contents, DataTable dt)
{
//A标记中title中显示的文本改变样式
string p = "";
//获取最热关键词的文章数量
int max = Convert.ToInt32(ArticleKeyWordsRules.getArticleCountAll().Rows[0]["ArticleCount"]);
//获取到的关键词关联文章总数的记录条数
int kcount = ArticleKeyWordsRules.getArticleCountAll().Rows.Count;
//获取最冷关键词的文章数量
int min = Convert.ToInt32(ArticleKeyWordsRules.getArticleCountAll().Rows[kcount - 1]["ArticleCount"]);
//循环关键词列表
for (int i = 0; i < dt.Rows.Count; i++)
{
if (contents.Contains(dt.Rows[i]["KeyWords"].ToString()))
{
//根据关键词获取总数量
int count = ArticleKeyWordsRules.getArticleCountByKeyWords(dt.Rows[i]["KeyWords"].ToString());
//取出替换前的关键词
string wordsBefore = dt.Rows[i]["KeyWords"].ToString();
//A标记中title显示的文本
p = wordsBefore;
//给A标记的title值进行改变,以免被替换掉
for (int j = 0; j < wordsBefore.Length; j++)
{
//j*2 添加的字符位置,等于后面的字符长度+1
p = p.Insert(j * 4, "|@#");
}
//获取该关键词的值(绿色=蓝色=值)
double num = (1 - count / (max - min)) * 230;
//把数字转换成int型的
int number = Convert.ToInt32(num);
//确定该关键词的背景色
string color = "#FF" + DtoX(number) + DtoX(number);
//替换后的样式
string wordsAfter = "<a href=\"ArticleList.aspx?KeyWords=" + HttpContext.Current.Server.UrlEncode(wordsBefore) + "¤tPage=1\" title=\"关 键 词:" + p + " 文章数量:" + count + "\" target=\"_blank\"><span style=\"background-color:" + color + ";\">" + wordsBefore + "</span></a>";
contents = contents.Replace(wordsBefore, wordsAfter);
}
}
//把|@#替换掉
contents = contents.Replace("|@#", "");
//返回内容
return contents;
}