如何在NodeJS中替换数组或字符串中的多个字母

时间:2019-06-21 05:32:46

标签: javascript arrays node.js string

我尝试了一下谷歌搜索,但没有取得太大的成功。 我想做的是将字符串中的每个字母更改为其他字母。例如 “这是一个字符串” 会变成像 “&@ /-52-.'49-!”

到目前为止,我的字符串/短语为

    let phrase = ['a', 'b', 'c'];

然后再

    phrase = phrase.map(phrase => {
    return phrase.replace('a', '-');
    return phrase.replace('b', '!');
    return phrase.replace('c', ',');
    return phrase.replace('d', ';'); 
    return phrase.replace('e', ',');
    return phrase.replace('f', '(');

..一直到Z,然后

    });
    console.log(phrase); 

当我运行它时,我得到这个输出

    [ '-', 'b', 'c' ]

但是应该是这个

    [ '-', '!', ',' ]

这意味着它只是“翻译”第一个字母并跳过其余字母,而我需要它来翻译整个字符串。

如果有人能指出正确的方向,我将非常感激:)

2 个答案:

答案 0 :(得分:4)

我会改用replace: replaceWith组织的对象:

const replacements = {
  a: '-',
  b: '!',
  c: ',',
  d: ';',
  e: ',',
  f: '('
};
const input = ['a', 'b', 'c'];
const output = input.map(inputPhrase => replacements[inputPhrase]);
console.log(output);

如果要替换的短语可以包含不能用作裸键的字符,请将其括在字符串中:

const replacements = {
  a: '-',
  b: '!',
  c: ',',
  d: ';',
  e: ',',
  f: '(',
  '###': 'foo'
};
const input = ['a', 'b', 'c', '###'];
const output = input.map(inputPhrase => replacements[inputPhrase]);
console.log(output);

答案 1 :(得分:2)

return从函数中退出-每次都重新分配phrase

let phrase = ['a', 'b', 'c'];

phrase = phrase.map(phrase => {
  phrase = phrase.replace('a', '-');
  phrase = phrase.replace('b', '!');
  phrase = phrase.replace('c', ',');
  phrase = phrase.replace('d', ';');
  phrase = phrase.replace('e', ',');
  return phrase.replace('f', '(');
});

console.log(phrase);

或使用一个对象(使用toLowerCase以避免区分大小写-如果您想为aA使用不同的字符,则将其删除):

let phrase = ['a', 'b', 'c'];

const replace = {
  "a": "-",
  "b": "!",
  "c": ",",
  "d": ";",
  "e": ",",
  "f": "("
};

phrase = phrase.map(phrase => replace[phrase.toLowerCase()]);

console.log(phrase);