Как удалить все вхождения любого данного символа из строки?

1

Мой код:

    function removeFromString(mystring,char){

    let regex = new RegExp(char, 'g');
    let string;
    for(let i; i< mystring.length; i++){
        string = mystring.replace(regex, ''));

    }
    console.log(mystring);
}
removeFromString('Hello How are you','o');

Это не работает. Любая идея, что я делаю неправильно?

Теги:
string

2 ответа

4
Лучший ответ

Метод String.replace() не изменяет строку, создает новую строку. Верните результат замены.

Кроме того, поскольку вы использовали флаг g в регулярном выражении, он заменит все вхождения в строке, поэтому вам не нужен цикл for.

function removeFromString(mystring, char) {
  const regex = new RegExp(char, 'g');
  return mystring.replace(regex, '');
}
console.log(removeFromString('Hello How are you', 'o'));

Вы также можете достичь одного и того же с помощью цикла, перестроя строку из всех символов исходной строки, а не char:

function removeFromString(mystring, char) {
  let string = '';
  
  for (let i = 0; i < mystring.length; i++) {
    if(mystring[i] !== char) string += mystring[i];
  }
  
  return string;
}
console.log(removeFromString('Hello How are you', 'o'));
  • 3
    Обратите внимание, что к char следует относиться осторожно, поскольку он может содержать метасимволы регулярных выражений.
1

Вы можете просто использовать для этого replace. Нет необходимости в цикле. лайк

var str = "How are you?";

console.log(str.replace(/o/g, ""))

g должен заменить все вхождения

Или просто для удовольствия.

var str = "How are you?";
console.log(str.split("o").join(''))

split строку на нужный символ. Это даст вам массив. Теперь вы можете присоединиться к этому массиву с помощью ''

Ещё вопросы

Сообщество Overcoder
Наверх
Меню