Javascript 遍历字符串并替换未按预期工作的空格

Javascript 遍历字符串并替换未按预期工作的空格,javascript,string,loops,Javascript,String,Loops,因此,我试图返回每个空格之间带有“%20”的字符串,除非在开头或结尾有空格,否则它将被删除(例如“Lighthouse Labs”变为“Lighthouse%20Labs”)。但是出于某种原因,我的第一个if语句不起作用,如果在开头或结尾有空格,它会将if语句中的代码应用于所有空格,我不知道为什么。我一定是误解了什么。感谢您的帮助 const urlEncode = function (text) { for (let i = 0; i < text.length; i++) {

因此,我试图返回每个空格之间带有“%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
const urlEncode=函数(文本){
for(设i=0;i
使用此功能:

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

函数将删除文本开头和结尾的空格。replace方法的第一个参数是一个正则表达式,表示每个空格都被第二个参数替换,
+
量词意味着如果有连续的空格,则仅用一个“%20”替换所有空格。

可以使用trim和replace:

const urlEncode = function (text) {
  const regex = / /g
  return text.trim().replace(regex, '%20');
}

我相信你可以使用trim(),你为什么不直接用
.trim().replace(“,“%20”)?为什么不直接使用
.trim()
然后再使用
.urlEncode()
呢,或者干脆用
.replace()
?你在这里重新发明轮子。没有理由,只是对编码非常陌生,认为这似乎是一个不错的解决方案。因为你是编码新手,我建议在开始使用字符串编码之前先探索
String
API,以熟悉可用的方法。只需通读一下,就可以开始填满你的工具箱。