Итерация по строке и замена пробелов не работает должным образом - PullRequest
0 голосов
/ 13 февраля 2020

Поэтому я пытаюсь вернуть строку с "% 20" между каждым пробелом, за исключением случаев, когда есть пробел в начале или конце, где он будет удален (например, "Lighthouse Labs" становится "Lighthouse%" 20Labs "). По какой-то причине мой первый оператор if не работает, и если в начале или конце есть пробел, он применяет код внутри оператора if ко ВСЕМ пробелам, и я понятия не имею, почему. Я должен быть в корне неправильно что-то здесь. Любая помощь приветствуется!

const urlEncode = function (text) {
  for (let i = 0; i < text.length; i++) {
    if (text.charAt(0) === " " || text.charAt(text.length - 1) === " ") {
      return text.split(" ").join("");
    } else {
      return text.split(" ").join("%20")
    }
  }
  return text;
};

console.log(urlEncode("Lighthouse Labs"));  // Lighthouse%20Labs

console.log(urlEncode(" Lighthouse Labs "));  // LighthouseLabs

console.log(urlEncode("blue is greener than purple for sure")); //blue%20is%20greener%20than%20purple%20for%20sure

console.log(urlEncode(" blue is greener than purple for sure")); //blueisgreenerthanpurpleforsure

console.log(urlEncode("blue is greener than purple for sure "));
//blueisgreenerthanpurpleforsure

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Вы можете использовать отделку и заменить:

const urlEncode = function (text) {
  const regex = / /g
  return text.trim().replace(regex, '%20');
}
0 голосов
/ 13 февраля 2020

используйте эту функцию:

const urlEncode = function (text){
    return text.trim().replace(/\s+/g, '%20')
}

Функция Trim () удалит пробелы из начала и конца текста. Первый аргумент метода replace - это регулярное выражение, которое говорит, что каждый пробел заменяется вторым аргументом, квантификатор + означает, что при наличии последовательных пробелов все они заменяются только одним "% 20"

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...