Функция которая получает строку и удаляет из нее символы

Вот само задание:

Написать функцию, которая получает в качестве аргумента строку и удаляет из нее символы,код которых больше 1103 или меньше 1040. Функция должна вернуть новую строку Применить эту функцию к строке

"Вчbvnера 789 был home work наiuyстоtящий + празrorднgfdик"

Есть набросок, но он не корректно работает:

function sliceChars(str) {
  var newStr = "";
  for (var i = 0; i < str.length; i++) {
    var symbol = str.charCodeAt(i);
    if (symbol < 1103 && symbol > 1040) {
      newStr += str[i];
    }
    if (symbol === 32) {
      newStr += " ";
      continue;
    }
  }
  return newStr;
}
console.log(
  sliceChars("Вчbvnера 789 был home work наiuyстоtящий + празrorднgfdик")
);

Прошу сделать только в виде функии. Или доделать данную, или написать с нуля. Заранее спасибо!


Ответы (2 шт):

Автор решения: Alexander Lonberg

:) Не разобрался сразу с вопросом. Вариант с удалением кодов символов. Пробелы, как я понимаю, нужно оставить.

function remove(str, start, end) {
  return str.replace(/[^\s]/g, (_) => {
    let n = _.charCodeAt()
    return (n < start || n > end) ? '' : _
  })
  // Вот это можно вставить для чистки лишних пробелов
    .replace(/\s+/g, ' ')
}

const str = "Вчbvnера 789 был home work наiuyстоtящий + празrorднgfdик"
console.log(remove(str, 1040, 1103))

Это был первый вариант с удалением чисел. Оставлю его :)

function remove(str, start, end) {
  return str.replace(/[0-9]+/g, (_) => {
    let n = Number.parseInt(_, 10)
    return (n < start || n > end) ? '' : _
  })
}

const str = "Вчbvnера 789 был home work наiuyстоtящий + празrorднgfdик"
const str2 = "Вчbvnера 1050 был home work наiuyстоtящий + празrorднgfdик"

console.log(remove(str, 1040, 1103))
console.log(remove(str2, 1040, 1103))

→ Ссылка
Автор решения: vsemozhebuty

Если ошибка в лишних пробелах, то можно исправить небольшим добавлением в условие:

function sliceChars(str) {
  var newStr = "";
  for (var i = 0; i < str.length; i++) {
    var symbol = str.charCodeAt(i);
    if (symbol < 1103 && symbol > 1040) {
      newStr += str[i];
    }
    // Вот тут:
    if (symbol === 32 && newStr[newStr.length - 1] !== " ") {
      newStr += " ";
    }
  }
  return newStr;
}
console.log(
  sliceChars("Вчbvnера 789 был home work наiuyстоtящий + празrorднgfdик")
);

→ Ссылка