为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕妹3146593 2023-03-24 16:20:35
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");
查看完整描述

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]));


查看完整回答
反对 回复 2023-03-24
?
牧羊人nacy

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'));


查看完整回答
反对 回复 2023-03-24
  • 2 回答
  • 0 关注
  • 75 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信