我正在尝试添加到
string
,在这种情况下,我想更改href
并将string
添加到href
中每个string
的开头。我已经弄清楚如何在一个实例中执行此操作,但如果字符串出现多次,则不会。有实现此目的的最佳实践吗?
如果只有一次出现,这就是我必须添加的内容(它也适用于多次出现,但只会改变第一次出现)。
let stringOne = '<div>
<p>A cool label</p>
<a href="123idofanitem">Link 1</a>
<p>A cool label</p>
<span>
<a href="1234idofanitem">Link 2</a>
</span>
<ul>
<li>
<a href="12345idofanitem">Link 3</a>
</li>
<li>
<a href="123456idofanitem">Link 4</a>
</li>
</ul>
</div>'
let index = stringOne.indexOf('href="');
let output = [stringOne.slice(0, index + 6),
'https://www.google.com/',
stringOne.slice(index + 6),].join('');//added +6 to account for href="
我正在尝试将所有
href
替换为 https://www.google.com/{existingHREF}
最后一点是,
stringOne
中可能有无限数量的链接,所以这就是为什么我试图找到一个解决方案,我可以在其中循环或类似的东西遍历所有链接并替换它们。
您可以将 RegExp 与 .replace 函数一起使用:
stringOne.replace(/href="/g, 'href="https://www.google.com/')
g
表示“全局”,是匹配字符串中每个出现的标志
我会用正则表达式来做到这一点:
var rx = /href="/gi;
var output = rx.replace(stringOne, "$1https://google.com");