【跪求】如何将字符串中的指定字符加上a标签?

ilikecat098 2019-06-28 11:22:47
跪求各位大佬帮忙。
字符串是一段html,里面会有a标签或p标签,类似下面这种:

我是字符串,蛤蛤,我是字符串,蛤蛤<a href="https://www.baidu.com">我是链接</a>蛤蛤

现在我想把第二个蛤蛤(下划线那个)变为a标签,类似下面的格式:

我是字符串,蛤蛤,我是字符串,<a href="https://www.baidu.com">蛤蛤</a><a href="https://www.baidu.com">我是链接</a>蛤蛤

如果用replace的话会换掉第一个蛤蛤,加上g的话会全部都换掉,如下

srt.replace(/蛤蛤/g,<a href="https://www.baidu.com">蛤蛤</a>)


求问大佬们都没有什么好办法
在有相同的字符时,可以只换掉指定的字符
...全文
649 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
baibaipleo 2019-07-01
  • 打赏
  • 举报
回复
引用 4 楼 ilikecat098的回复:
[quote=引用 3 楼 Hello World, 的回复:] 可以用回调函数来处理,这样可以更灵活,正则表达式也可以简单一些:
var str = '我是字符串,蛤蛤,我是字符串,蛤蛤<a href="https://www.baidu.com">我是链接</a>蛤蛤';
var seq = 0;
var result = str.replace(/蛤蛤/g,function(match,index,orgStr){
	seq++;
	if(seq === 2){
		return '<a href="https://www.baidu.com">蛤蛤</a>';
    }else{
		return match;
    }
});
console.log(result);
谢谢大佬,我的问题没描述清楚,不一定是第二个,可能是第三个,也可能是第一个。这是一个为选中的文字加上超链接的功能,类似富文本编辑器那种......[/quote] 选中就是个事件啊 选中时触发 传递当前选中内容 或者根本不用传参 document.selecti 打不出来on
ilikecat098 2019-07-01
  • 打赏
  • 举报
回复
引用 3 楼 Hello World, 的回复:
可以用回调函数来处理,这样可以更灵活,正则表达式也可以简单一些:
var str = '我是字符串,蛤蛤,我是字符串,蛤蛤<a href="https://www.baidu.com">我是链接</a>蛤蛤';
var seq = 0;
var result = str.replace(/蛤蛤/g,function(match,index,orgStr){
	seq++;
	if(seq === 2){
		return '<a href="https://www.baidu.com">蛤蛤</a>';
    }else{
		return match;
    }
});
console.log(result);
谢谢大佬,我的问题没描述清楚,不一定是第二个,可能是第三个,也可能是第一个。这是一个为选中的文字加上超链接的功能,类似富文本编辑器那种......
Hello World, 2019-07-01
  • 打赏
  • 举报
回复
拿到选中的文字还不行,得拿到选中的区域才可以处理,参考:利用 javascript 实现富文本编辑器
ilikecat098 2019-07-01
  • 打赏
  • 举报
回复
引用 5 楼 baibaipleo 的回复:
[quote=引用 4 楼 ilikecat098的回复:][quote=引用 3 楼 Hello World, 的回复:] 可以用回调函数来处理,这样可以更灵活,正则表达式也可以简单一些:
var str = '我是字符串,蛤蛤,我是字符串,蛤蛤<a href="https://www.baidu.com">我是链接</a>蛤蛤';
var seq = 0;
var result = str.replace(/蛤蛤/g,function(match,index,orgStr){
	seq++;
	if(seq === 2){
		return '<a href="https://www.baidu.com">蛤蛤</a>';
    }else{
		return match;
    }
});
console.log(result);
谢谢大佬,我的问题没描述清楚,不一定是第二个,可能是第三个,也可能是第一个。这是一个为选中的文字加上超链接的功能,类似富文本编辑器那种......[/quote] 选中就是个事件啊 选中时触发 传递当前选中内容 或者根本不用传参 document.selecti 打不出来on[/quote] selection拿到当前选中的文字,比如是第三个蛤蛤,然后应该怎么匹配到第三个呢?
2019-06-29
  • 打赏
  • 举报
回复

var str = '我是字符串,蛤蛤,我是字符串,蛤蛤<a href="https://www.baidu.com">我是链接</a>蛤蛤';
var replaceIndex = [1], i = 0;
str = str.replace(/蛤蛤/ig, v => {
	if(replaceIndex.indexOf(i++) >= 0){
		return `<a href="https://www.baidu.com">${v}</a>`;
	}
	return v;
});
console.log(str);
Hello World, 2019-06-29
  • 打赏
  • 举报
回复
可以用回调函数来处理,这样可以更灵活,正则表达式也可以简单一些:
var str = '我是字符串,蛤蛤,我是字符串,蛤蛤<a href="https://www.baidu.com">我是链接</a>蛤蛤';
var seq = 0;
var result = str.replace(/蛤蛤/g,function(match,index,orgStr){
seq++;
if(seq === 2){
return '<a href="https://www.baidu.com">蛤蛤</a>';
}else{
return match;
}
});
console.log(result);
天际的海浪 2019-06-29
  • 打赏
  • 举报
回复
srt.replace(/(蛤蛤.*?)蛤蛤/,'$1<a href="https://www.baidu.com">蛤蛤</a>')

87,990

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧