javascript - 如何一次替换字符串的多个不同部分?

标签 javascript

所以,我有一个字符串,它是一系列从 1 到 6 的数字。根据有问题的数字,我想用不同的代码替换每个。这是针对 Discord 机器人的,因此六个数字中的每一个都应替换为不同的 Discord 表情符号代码。我试过使用 string.replace 链,但是,由于这些表情符号代码包含数字,替换项开始相互堆叠并替换替换项(我知道这太麻烦了!)这完全破坏了代码。

这是一个示例链:

1 2 1 4 6 

这是一个关于如何替换数字的索引:

1 = <:attr1:710526292784578581>
2 = <:attr2:710526292721664142>
3 = <:attr3:710526292642103398>
etc.

因此,理想情况下,它应该变成像这样的字符串,而不是最终困惑和混合的字符串,因为替换链正在吞噬自己。

<:attr1:710526292784578581> <:attr2:710526292721664142> <:attr3:710526292642103398>

我怎样才能基本上同时进行这些替换,以便它们影响字符串中的项目,而不开始相互影响?答案将不胜感激!

编辑:这是我自己对替换链的尝试,它返回了一个错误的困惑。

var attribEmoji = attribResult.join(" ").replace(/1/g, "<:attr1:710526292784578581>").replace(/2/g, "<:attr2:710526292721664142>").replace(/3/g, "<:attr3:710526292642103398>");

最佳答案

在数字链中,如果每个数字后面都有一个空格而替换数字没有,那么这是一个很容易解决的问题。创建一个图标数组并遍历它们,用适当的代码用空格替换索引。

var emojis = [];
emojis[1] = "<:attr1:710526292784578581>";
emojis[2] = "<:attr2:710526292721664142>";
emojis[3] = "<:attr3:710526292642103398>";
var chain = "1 2 3 ";

emojis.forEach(function(i,v){
chain = chain.replace(v + " ",i + " ");
});

console.log(chain);

关于javascript - 如何一次替换字符串的多个不同部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61803493/

相关文章:

javascript - 几乎是回文吗?

javascript - React - 为什么组件没有更新

javascript - 从动态 HTML 元素检索 jQuery 数据返回未定义

javascript - 如何调用 range::-webkit-slider-runnable-track?

php - 在 Php header 重定向后提供反馈

javascript - JqG​​rid:显示列内 HTML 元素的文本

javascript - 使用 onscroll 动态更改 div 的高度不起作用

javascript - <enter> 停止在按键上工作

javascript - Fetch 未被 Flow 覆盖

javascript - EmberJS 将变量传递给布局