每次出现在字符串中时,将部分字符串替换为新值,JavaScript

Replace part of string with new value for each time it appears in string, JavaScript

我想用 localStorage 中的玩家名称替换字符串中的 ":player:"。如果字符串中有多个 ":player:",我是否想每次在字符串中出现时用不同的名称替换 ":player:",例如

假设我有一个看起来像这样的字符串:

str = ":player: drink 5 sips if :player: has 5 fingers"

那我要输出就可以了

str = "Alex drink 5 sips if Harry has 5 fingers"

我的 localStorage 数据如下所示: namesArray = [["Alex",0],["Harry",1]]

我尝试了 str.replace() 的不同变体,但它没有按照我想要的方式工作...

是否存在这样的东西?

forEach(str.includes(":player:") => {
  str.replace(":player:", localStorageName[randomNumber].name);
});

使用replaceAll()方法和一个函数作为替代。然后它可以从 localStorage 检索并在每次调用时递增索引。

localStorage.setItem('name', JSON.stringify(['Alex', 'Harry']));
let str = ":player: drink 5 sips if :player: has 5 fingers";
let index = 0;
str = str.replaceAll(':player:', () => JSON.parse(localStorage.getItem('name'))[index++]);
console.log(str);