Javascript 使用veriable全局替换字符串
我试图使用变量全局替换字符串,但在替换时得到意外替换。我搜索了同一个问题,但没有找到任何解决方案,所以我将其发布在这里。也许你们会把我带到犯错误的地方 情况如下:Javascript 使用veriable全局替换字符串,javascript,node.js,string,Javascript,Node.js,String,我试图使用变量全局替换字符串,但在替换时得到意外替换。我搜索了同一个问题,但没有找到任何解决方案,所以我将其发布在这里。也许你们会把我带到犯错误的地方 情况如下: 我有一个HTML邮件正文和一个从邮件正文中提取并存储为数组的链接列表 我正在尝试迭代links数组,并尝试从邮件正文中查找匹配项 当我使用replace()方法通过添加一些前缀来替换链接时 看起来很直截了当,对吧 这是我在更换链接时遇到的问题 有一些重复的链接,我已经。当试图用前缀替换它们时,它将被替换2次 对于e.x prefix
HTML
邮件正文和一个从邮件正文中提取并存储为数组的链接列表replace()
方法通过添加一些前缀来替换链接时prefix = 'http://this.prefix?redirect_uri='
link = 'http://google.com'
// Expected Output
http://this.prefix?redirect_uri=http://google.com
// Getting Output
http://this.prefix?redirect_uri=http://this.prefix?redirect_uri=http://google.com
您可以看到前缀正在重复
我正在分享我的实际代码,所以,理解我的意思对你们会更有帮助
让邮件正文=`
急迫
`;
常量链接=[
'https://aabc.pagerduty.com/incidents',
'https://aabc.pagerduty.com/incidents/P9X3024'
]
const processTrackingLinks=(linkArray,mailBody)=>{
常量前缀https://test.io?redirect_uri=';
//常量映射=[];
for(设i=0;i
如果你知道为什么会这样,
我是做错了什么还是这是个问题
请告诉我
如有任何决议,将不胜感激。:) 这种方法怎么样。您不再需要
链接
数组
const process = mailBody => {
return mailBody.replace(/href="/g, `href="http://test.io?redirect_uri=`)
}
问题在于您使用的链接数组。双重替换是因为”https://abc.pagerduty.com/incidents“是的子字符串”https://abc.pagerduty.com/incidents/“ 请改用以下数组:
let链接=[
'https://abc.pagerduty.com/incidentsgoogle',
'https://abc.pagerduty.com/incidents/',
'https://abc.facebook.com'
];代码>事件链接与两个搜索词匹配,因此将被替换两次。快速修复方法是将开头的“
插入链接数组和前缀,然后使用前缀+链接[i]。子字符串(1)
作为替代;这样它只匹配一次:@ChrisG谢谢你的建议,我没有想到第二个链接会成为第一个匹配的子字符串,这是导致这一问题变得越来越严重的唯一原因。你可以在答案部分写下你的想法,我会将其作为正确答案添加。更可靠的解决方案是som这样:你的方法很完美,但我们有逻辑从href
收集链接,这就是为什么我们有一系列链接。因此,它不会是那种替换。但我感谢你的努力。谢谢:)感谢,但我只需要在实际替换文本中添加更多字符。添加双引号已修复问题E