2 回答

TA貢獻1789條經驗 獲得超10個贊
制作一個對象映射字符到它們的替換,然后從對象的鍵構造一個正則表達式:
const replacements = {
0: 'A',
1: 'B',
2: 'Y',
3: 'Z',
};
const pattern = new RegExp(Object.keys(replacements).join('|'), 'g');
console.log('string01230123'.replace(pattern, char => replacements[char]));
另一種方法是更簡潔地構造對象,如果您有很多字符要替換:
const replacements = Object.fromEntries(
`
0 A
1 B
2 Y
3 Z
`
.split('\n')
.filter(Boolean)
.map(line => [line[0], line[2]])
);
const pattern = new RegExp(Object.keys(replacements).join('|'), 'g');
console.log('string01230123'.replace(pattern, char => replacements[char]));

TA貢獻1862條經驗 獲得超7個贊
您可以重新創建相同的方法。將不得不創建一個將兩者結合起來的查找對象,然后使用正則表達式或某種循環來進行替換。
const strtr = (str, matches, replacements) => {
const matchesArr = matches.split('');
const lookup = matchesArr.reduce((o, c, i) => ({ ...o,
[c]: replacements[i]
}), {});
return str.replace(new RegExp(matchesArr.join('|'), 'g'), x => lookup[x]);
}
console.log(strtr('string01230123', '0123', 'ABYZ'));
const strtr2 = (str, matches, replacements) => {
const matchesArr = matches.split('');
const lookup = matchesArr.reduce((o, c, i) => ({ ...o,
[c]: replacements[i]
}), {});
return str.split('').map(x => lookup[x] || x).join('')
}
console.log(strtr2('string01230123', '0123', 'ABYZ'));
添加回答
舉報