'Clean string javascript function

This my actual scenario

const cleanString=( string )=>{
  let city = getAccentedCity(string);
  if( city.indexOf('%20')<0 ) return city;
  return city.replaceAll('%20', ' ');
  
}

I have now to add an other case when a city contains the string "%c3%9f" and i want to replace it with 's'

How can i add it in my current function?



Solution 1:[1]

Just add more tests if you do not want to rewrite the code

const cleanString= string => {
  let city = getAccentedCity(string);
  if (city.toLowerCase().indexOf('%c3%9f') >= 0 ) return city.replaceAll('%c3%9f', 's');
  if (city.indexOf('%20') < 0) return city;
  return city.replaceAll('%20', ' ');
}

Solution 2:[2]

First of all you should be aware that String.replaceAll() function is not supported on IE.

If you're ok with it and I assume you are since you're already using it, then I would just create an array of pairs that you can spread into the replaceAll function.

Something like this:

const replaceMap = [
  ['%20', ' '],
  ['%c3%9f', 's'],
];

const cleanString = (string) => {
  let city = getAccentedCity(string);
  replaceMap.forEach(pair => city = city.replaceAll(...pair));
  return city;
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 ovidb