Итерация по строке и удаление всех экземпляров

Моими инструкциями было перебрать строку и удалить все вхождения буквы "а". Я думал, что будет легко найти примеры, но я не смог этого сделать. Некоторые удаляли бы письмо без итерации, но это не то, что просили инструкции. Если бы кто-то мог, пожалуйста, взглянуть на мой код и помочь мне в моей задаче, я был бы очень признателен! Функция "removeA" теперь будет перебирать строку, и только консоль записывает!== "a", но я не могу понять, как сохранить ее в новой строке. Заранее спасибо.

removeA = function(stringWithA) {
    if (stringWithA === null || typeof (stringWithA) !== "string" || stringWithA === "") {  //Checking for is null AND is not array
        return 'Please enter a valid string';
    } else {
        lowerWithA = stringWithA.toLowerCase();
        for (var i = 0; i < lowerWithA.length; i++) {
            if (lowerWithA.charAt(i) !== "a") {
                console.log(lowerWithA.charAt(i));
            }
        }
    }
}

3 ответа

Решение

Почему бы не создать новую строку со всеми символами, которые не являются a?

var newString = "";

for (var i = 0; i < lowerWithA.length; i++) {
    var letter = lowerWithA.charAt(i);
    if (letter !== "a") {
        newString += letter;
    }
}

console.log(newString);

Если вы хотите расширить это, чтобы быть без учета регистра:

...
if (letter !== 'a' || letter !== 'A') { ... }

И просто не звони String.toLowerCase() на оригинальной строке.

Вы можете хранить буквы в массиве.

var removeA = function(stringWithA) {

  if (stringWithA === null || typeof(stringWithA) !== "string" || stringWithA === "") { //Checking for is null AND is not array
    return 'Please enter a valid string';
  } else {
    var newString = [];
    lowerWithA = stringWithA.toLowerCase();
    for (var i = 0; i < lowerWithA.length; i++) {
      if (lowerWithA.charAt(i) !== "a") {
        newString.push(lowerWithA.charAt(i))
      }
    }
    
    return newString.join('');
  }
}

console.log(removeA("Eleazar"))

Или просто используйте regex:

var removeA = function(stringWithA) {
  if (stringWithA === null || typeof(stringWithA) !== "string" || stringWithA === "") { //Checking for is null AND is not array
    return 'Please enter a valid string';
  } else {
    return stringWithA.replace(/a/gi, '')
  }
}

console.log(removeA("EleaaaaazAreeeeaaaElAAAAAeaaaEleEvene"))

Я полагаю, что уже есть функция, которая вам нужна, replace:

var stringWithA = 'A aaaa bbbcc!';
alert(stringWithA.replace(/[Aa]/g, ''));

Другие вопросы по тегам