用字符串中的新字符替换多个单个字符的所有实例

JavaScript 有类似 PHP 的字符串翻译的功能吗?我需要用特定的替换替换字符串中所有特殊字符的实例。例如:0 => A,1 => B,2 => Y,3 => Z。

在 PHP 中我可以这样做:

strtr('string01230123', '0123', 'ABYZ');

但在 JavaScript 中,我目前正在通过串接一堆替换函数来完成此操作。

'string01230123'.replace(/0/g, "A").replace(/1/g, "B").replace(/2/g, "Y").replace(/3/g, "Z");


慕妹3146593
浏览 77回答 2
2回答

至尊宝的传说

制作一个对象映射字符到它们的替换,然后从对象的键构造一个正则表达式: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 A1 B2 Y3 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]));

牧羊人nacy

您可以重新创建相同的方法。将不得不创建一个将两者结合起来的查找对象,然后使用正则表达式或某种循环来进行替换。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'));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript