【问题标题】:Replace part of string with new value for each time it appears in string, JavaScript每次出现在字符串中时,用新值替换部分字符串,JavaScript
【发布时间】:2021-11-09 20:31:24
【问题描述】:

我想用 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);
});

【问题讨论】:

    标签: javascript string include


    【解决方案1】:

    使用带有函数的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);
    

    【讨论】:

    • 我的意思是这种工作?我做错了吗?当我想要str = "Alex drink 5 sips if Harry has 5 fingers"时,我得到了类似str = "Alex drink 5 sips if Alex has 5 fingers"的回复
    • 我刚刚对其进行了测试,它确实有效。我怀疑您没有在localStorage 中正确存储名称。我已将其添加到答案中。
    • 效果很好,但不幸的是我不是这样存储的。我的 localStorage 数据如下所示:```namesArray = [["Alex",0],["Harry",1]]```。我已将其添加到问题中。
    • 问题中的代码看起来像是每个名称都有单独的 localStorage 条目。我已将其更新为使用数组。
    • 不错!谢谢
    猜你喜欢
    • 2016-07-07
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 2011-07-08
    • 2018-08-11
    相关资源
    最近更新 更多