Я бы хотел декодировать строку URI, пока не произойдет никаких изменений.Обычно строка URI содержит около 53'000 символов.Так что сравнение должно быть быстрым.В моем примере кода я использовал короткую форму строки.
Вот мой пример кода, который, к сожалению, не работает:
var uri = "https%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dst%C3%A5le%26car%3Dsaab_VERY_LONG_URL"
var firstDecode = decodeURIComponent(uri.replace(/\+/g, " "));
var res = Decode(firstDecode);
function Decode(firstDecode){
var secondDecode = decodeURIComponent(uri.replace(/\+/g, " "))
while (firstDecode.localeCompare(secondDecode) != 0) {
firstDecode = decodeURIComponent(uri.replace(/\+/g, " "))
}
return firstDecode;
}
/* Expected Returns:
localeCompare()
0: exact match
-1: string_a < string_b
1: string_a > string_b
*/
Как я могу сделать это самым плавным способом?Заранее спасибо.
Обновление 1
Хорошо, новая версия моего кода:
var uri = "https%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dst%C3%A5le%26car%3Dsaab_VERY_LONG_URL"
var res = Decode(uri);
function Decode(uri){
var initialURI = URI
var newURI = decodeURIComponent(uri.replace(/\+/g, " "));
If (initialURI === newURI) {
// no changes anymore
return newURI;
} else {
// changes were detected, do this function again
var res = Decode(newURI);
}
}
Но он все еще не работает правильно.