Я работаю над системой декодирования и кодирования URL. Но по какой-то странной причине он будет декодировать / кодировать только определенную строку. Кроме того, кажется, что он декодирует / кодирует строку, когда в ней есть определенный фрагмент. Это довольно сложно объяснить, но это довольно непонятно, что это может не сработать. Я попытался выяснить, в чем проблема, но из-за этого вся проблема кажется скорее нелогичной, чем логичной.
Надеюсь, кто-нибудь сможет мне с этим помочь. С объяснением этому. Я бы хотел, чтобы код был в том же стиле. Так я могу попрактиковаться JS больше.
// I know I don't have all the characters markek. I am doing that later
var 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 undefined
console.log(Url.encode("="));
// Encodes it just find
console.log(Url.encode("%3F"));
// Encodes both of them but for some odd reason encodes the
// equal sign twice.
console.log(Url.encode("%3F ="));
Я действительно надеюсь, что все кажется ясным относительно того, в чем моя проблема. Обычно я просто пытаюсь найти здесь ответ, но эта проблема настолько запутана, что я не знаю, что именно искать.
Спасибо!