第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

無法正確解碼/編碼 Url

無法正確解碼/編碼 Url

慕少森 2022-12-22 11:53:34
我正在研究一個(gè) Url 解碼和編碼系統(tǒng)。但由于一些奇怪的原因,它只會(huì)解碼/編碼特定的字符串。此外,它似乎在字符串中包含特定片段時(shí)對其進(jìn)行解碼/編碼。這很難解釋,但對于這可能行不通的事情卻很困惑。我試著弄清楚它的問題,但這只會(huì)讓整個(gè)問題看起來更不合邏輯。我希望有人可以幫助我。有解釋。如果代碼與它的風(fēng)格相同,我會(huì)喜歡它。我也知道網(wǎng)上可能有一些軟件包可以輕松做到這一點(diǎn),但我寧愿自己制作。這是我可以更多地練習(xí) JS 的一種方式。// I know I don't have all the characters markek. I am doing that latervar Url = {  filterEncode : ["%2B","%3A","%3D","%3F","%2F","%26","%252F","%253A","%253D","%253F","%252B"],  filterDecode : ["+",":","=","?","/","&","%2F","%3A","%3D","%3F","%2B"],  decode : function(decodeText){    let returnString, a, b;    let filterEncode = Url.filterEncode;    let filterDecode = Url.filterDecode;    for (a = 0; a < filterEncode.length; a++){      let regexEn = new RegExp(filterEncode[a],"g");      let regexDe = new RegExp("/" + filterDecode[a],"g");      let regex = new RegExp(regexEn,"g");      let array = (decodeText.match(regex) || []).length      for (b = 0; b < array; b++){        returnString = decodeText.replace(filterEncode[a],filterDecode[a]);        decodeText = returnString;      }    }    return returnString;  },  encode : function(encodeText){    let returnString, a, b;    let filterEncode = Url.filterEncode;    let filterDecode = Url.filterDecode;    for (a = 0; a < filterEncode.length; a++){      let regexEn = new RegExp("[" + filterEncode[2] + "]","g");      let regexDe = new RegExp("[" + filterDecode[2] + "]","g");      let regex = new RegExp(regexEn,"g");      let array = (encodeText.match(regex) || []).length;      for (b = 0; b < array; b++){        returnString = encodeText.replace(filterDecode[a],filterEncode[a]);        encodeText = returnString;      }    }    return returnString;  }}// Saying it is undefinedconsole.log(Url.encode("="));// Encodes it just findconsole.log(Url.encode("%3F"));// Encodes both of them but for some odd reason encodes the// equal sign twice.console.log(Url.encode("%3F ="));我確實(shí)希望關(guān)于我的問題是什么,一切看起來都很清楚。我通常只是嘗試在這里搜索答案,但這個(gè)問題太混亂了,我不知道我到底應(yīng)該搜索什么。
查看完整描述

1 回答

?
皈依舞

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊

您的某些字符串filterDecode作為正則表達(dá)式具有特殊含義。將字符串轉(zhuǎn)換為正則表達(dá)式時(shí),需要將每個(gè)字符都包裹起來,[]以便按字面意思進(jìn)行匹配。


/創(chuàng)建regexDe. _


不需要for(b...)循環(huán)。在調(diào)用中使用正則表達(dá)式,replace()它將立即執(zhí)行所有替換,因?yàn)樗術(shù)標(biāo)志。


將包含的編碼字符串放在%數(shù)組的開頭。否則,當(dāng)您對類似=as的內(nèi)容進(jìn)行編碼時(shí)%3D,外循環(huán)的后續(xù)迭代會(huì)將其重新編碼為%253D。如果它在原始字符串中,而不是中間步驟,您只想對其進(jìn)行編碼。


var Url = {

  filterDecode: ["%252F", "%253A", "%253D", "%253F", "%252B", "%2B", "%3A", "%3D", "%3F", "%2F", "%26"],

  filterEncode: ["%2F", "%3A", "%3D", "%3F", "%2B", "+", ":", "=", "?", "/", "&"],

  strToRe: function(str) {

    let reStr = str.split("").map(c => '[' + c + ']').join('');

    return new RegExp(reStr, "g");

  },

  decode: function(decodeText) {

    let a;

    let filterEncode = Url.filterEncode;

    let filterDecode = Url.filterDecode;

    for (a = 0; a < filterDecode.length; a++) {

      decodeText = decodeText.replace(Url.strToRe(filterDecode[a]), filterEncode[a]);

    }

    return decodeText;

  },

  encode: function(encodeText) {

    let a, b;

    let filterEncode = Url.filterEncode;

    let filterDecode = Url.filterDecode;

    for (a = 0; a < filterEncode.length; a++) {

      encodeText = encodeText.replace(Url.strToRe(filterEncode[a]), filterDecode[a]);

    }

    return encodeText;

  }

}


console.log(Url.encode("="));

console.log(Url.decode("%3D"));

console.log(Url.encode("%3F"));

console.log(Url.decode("%253F"));

console.log(Url.encode("%3F ="));

console.log(Url.decode("%253F %3D"));


查看完整回答
反對 回復(fù) 2022-12-22
  • 1 回答
  • 0 關(guān)注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)