将一个字符串中的单词替换为一个字符串数组中的单词

3
我收到了一个字符串,想要将其中的某些词语清除掉。我试着写了一个函数来实现这个功能,但是它并没有生效:
export const cleanArrondissements = async (city) => {

  const arrondissements = [ 'Arrondissement', 'arrondissement', '1er','2e','3e', '4e', '5e', '6e', '7e', '8e', '9e', '10e','11e','12e','13e','14e', '15e', '16e', '17e', '18e', '19e', '20e']
  arrondissements.forEach(element => {
    city.replace(element, '')
  });
  return city;

你觉得怎样做最好?

有什么更好的方法吗?


2
请仔细阅读replace函数的工作说明。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/replace - CBroe
6
.replace() 返回一个新的字符串,你需要将 .replace() 返回的字符串赋值给 city 变量。 ---> city = city.replace(element, '') - Yousaf
希望字符串中只出现一次“只”。 - epascarello
2个回答

2

replace() 方法搜索字符串中的指定值或正则表达式,并返回一个新字符串,其中指定的值被替换。

因此,使用 replace() 方法时并不会更改元素。您需要将其赋值给变量以接受 replace() 方法所做的更改。

export const cleanArrondissements = async (city) => {   
  const arrondissements = [ 'Arrondissement', 'arrondissement', '1er','2e','3e', '4e', '5e', '6e', '7e', '8e', '9e', '10e','11e','12e','13e','14e', '15e', '16e', '17e', '18e', '19e', '20e']
  arrondissements.forEach(element => {
    city=city.replace(element, '')
  });
  return city;
}

如果您在基本字符串中有多个相同的元素,则可以使用正则表达式。
city=city.replace(new RegExp(element, 'g'), '')

1

Reduce使它更清洁:

const cleanArrondissements = (city) => {
    
      const arrondissements = [ 'Arrondissement', 'arrondissement', '1er','2e','3e', '4e', '5e', '6e', '7e', '8e', '9e', '10e','11e','12e','13e','14e', '15e', '16e', '17e', '18e', '19e', '20e']
      
      return arrondissements.reduce((acc, cur) => acc.replace(cur, ""), city);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接