阻止.replace在Javascript中多次替换字符

时间:2019-01-17 00:49:49

标签: javascript

我有一个字符串,看起来像“ R U R'U'R'F R2 U'R'U'R U R'F'”

我想用F替换所有R,并用R替换所有F。问题是,当我使用如下所示的多个.replaces时,R更改为F,然后又更改回R,导致没有更改。

alg = alg.replace(/R/g, "F").replace(/F/g, "R");

此外,此刻我的.replaces看起来像这样:

alg = alg.replace(/R/g, "F");
alg = alg.replace(/L/g, "B")
alg = alg.replace(/F/g, "R");
alg = alg.replace(/B/g, "L");

是否有一种更干净的布局方法,而不必将它们全部堆叠在一行上?

对于这两个问题的任何帮助,我将不胜感激。 谢谢。

1 个答案:

答案 0 :(得分:6)

使用带有替换功能的 replace,以便所有替换一次发生,以确保刚刚被替换的字符不会再次被替换:< / p>

const input = "R U R' U' R' F R2 U' R' U' R U R' F";
const replaceObj = {
  R: 'F',
  F: 'R'
}
const output = input.replace(/[RF]/g, char => replaceObj[char]);
console.log(output);