如何从数组中给定的字符串中删除字符

How can I remove characters from a string given in an array

出于自我开发的目的,我想创建一个带有两个参数的函数 - 字符串和数组。它应该 return 一个没有数组中给定字母的字符串。

function filterLetters(str, lettersToRemove) {

}

const str = filterLetters('Achievement unlocked', ['a', 'e']);

有人可以给我任何关于如何实现这一目标的指示吗?

对于每个要替换的字母,将其删除(即用“”替换)。完成后,return 更新后的字符串:

function filterLetters(str, lettersToRemove) {
    lettersToRemove.forEach(function(letter){
        str = str.replaceAll(letter, '');
    })
    return str
}

另见 How to replace all occurrences of a string in JavaScript

一种简单的方法是循环遍历数组中的每个值,并使用每个索引字符调用 str 上的替换字符串方法。下面的代码执行此操作。

function filterLetters(str, lettersToRemove){
   for (const letter of lettersToRemove){
      str = str.replaceAll(letter,"");
   }
   return str;
}

创建一个 regular expression by joining the array elements with a | (so a|e), and then use replaceAll 来匹配这些字母并将它们替换为空字符串。

如果您想要删除大写字母和 lower-case 字母,请将“case-insenstive”标志添加到正则表达式中。 'gi' 而不是 'g'.

function filterLetters(str, lettersToRemove) {
  const re = new RegExp(lettersToRemove.join('|'), 'g');
  return str.replaceAll(re, '');
}

const str = filterLetters('Achievement unlocked', ['a', 'e']);

console.log(str);

您可以将正则表达式与 replaceAll 一起使用以从字符串中删除所有字符。

If you want to consider upper case also then use 'gi' else no need for regex also. str.replaceAll(char, '')

const removeChar = (str, c) => str.replaceAll(new RegExp(`[${c}]`, "gi"), "");

const run = () => {
  const str = "Achievement unlocked";
  const chars = ["a", "e"];

  let result = str;
  chars.forEach((char) => {
    result = removeChar(result, char);
  });
  return result;
};

console.log(run());

您应该使用 split 函数将字符串转换为数组并循环遍历该数组并检查函数的第二个参数中是否存在每个字符。为了使这个函数不区分大小写,我使用 toLowerCase 将字符转换为

function filterLetters(str, lettersToRemove) {
  return str.split('').reduce((acc, current)=> {
    if(lettersToRemove.indexOf(current.toLowerCase()) == -1){
      acc.push(current);
    }
    return acc;
  }, []).join('');
}

const str = filterLetters('Achievement unlocked', ['a', 'e']);

console.log(str);