亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用字符串中的新字符替換多個單個字符的所有實例

用字符串中的新字符替換多個單個字符的所有實例

慕妹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 關注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號