来个js高手,一段文字里有很多关键词,每200字给关键词加一个超链接,跪求

I_color 发布于 2015/06/25 11:46
阅读 891
收藏 1
来个js高手,一段文字里有很多关键词,每200字给关键词加一个超链接,跪求
加载中
0
jacky-zhuo
jacky-zhuo
//递归方式
function replace(str, keyword, url) {
	var index = str.indexOf(keyword),
		last,
		next,
		strLength = index + keyword.length + 200;

	if(index === -1) {
		return str;
	}

	last = str.substr(0, strLength);
	next = str.substr(strLength);

	return last.replace(keyword, "<a href=\"" + url + "\">" + keyword + "</a>") + replace(next, keyword, url); 
}

//回调函数方式
function replace(str, keyword, url) {
	var lastIndex = -200,
		reg = new RegExp(keyword, "g");

	return str.replace(reg, function (keyword, index, str) {
		if(index - lastIndex >= 200) {
			keyword = "<a href=\"" + url + "\">" + keyword + "</a>";
			lastIndex = index;
		}

		return keyword;
	});
}

replace(str, "关键字", "http://www.baidu.com/");



jacky-zhuo
jacky-zhuo
修改了... 之前写错咯
I_color
I_color
递归的那个可以,单是回调那个不行啊
I_color
I_color
非常感谢,真心牛,赞一个
0
pantrick
pantrick

indexOf('关键字')?

I_color
I_color
要求是每200字才添加
0
逝水fox
逝水fox

js的字符串 indexOf有第二参数可以指定开始搜索的位置,找到前一个位置后,下次indexOf就把搜索位置加200咯

http://www.w3school.com.cn/jsref/jsref_indexOf.asp

I_color
I_color
我看看先
0
boystudio
boystudio

function formatterKeyWord(searchText, keyWord){

var reg = new RegExp(keyWord, 'g');

var index = 0;

var flag = 0;

return searchText.replace(reg, function (word) {

    if (index = 0) {

        index = searchText.indexOf(word, 0);

        return '<a href="#">' + word + '</a>';

    }

    flag = searchText.indexOf(word, index +1 );

    if (flag - index > 200) {        

        index = flag;

        return '<a href="#">' + word + '</a>';

    }

return word;

});

}


没测试过,随手写的,应该类似这样

I_color
I_color
先谢了
0
请叫我赵小宝
I_color
I_color
提供下具体思路
0
邓振华
JS压缩美化:http://tool.diannao.wang/jsmeihua/
返回顶部
顶部