Удалить знак плюса (+) в строке запроса URL-адреса
Я пытаюсь получить строку в следующем URL-адресе для отображения на моей веб-странице.
http://example.com?ks4day=Friday+September+13th
EDIT: дата в URL-адресе будет изменяться от человека к человеку, поскольку она была объединена моей программой CRM.
Я могу заставить его отображать на моей веб-странице, используя приведенный ниже код, проблема заключается в плюсах (+).
например. Пятница + сентября + 13
Мне нужно, чтобы это заменило знаки плюс (+) пробелами, чтобы он выглядел так:
например. Пятница 13 сентября
Я новичок в этом, поэтому у меня возникают проблемы с его работой.
Любая помощь будет оценена.
Это код, который я использую в файле .js
function qs(search_for) {
var query = window.location.search.substring(1);
var parms = query.split('&');
for (var i=0; i<parms.length; i++) {
var pos = parms[i].indexOf('=');
if (pos > 0 && search_for == parms[i].substring(0,pos)) {
return parms[i].substring(pos+1);;
}
}
return "";
}
Это код, который я использую на своей веб-странице, чтобы он отображал
<script type="text/javascript">document.write(qs("ks4day"));</script>
Ответы
Ответ 1
Если это то, что вы делаете, знак плюса не будет единственным, что вам покажется трудным. Апостроф ('), равно (=), плюс (+) и в основном что-либо не в допустимых URL-адресах (см. Percent-encoding @Википедия ) собирается сбежать.
Что вы ищете, это функция decodeURIComponent.
Ответ 2
Хотя ответ Bibhu будет работать для этого одного случая, вам нужно добавить decodeURIComponent
, если вы закодировали символы в своей строке URI. Вы также хотите убедиться, что вы замените перед декодированием, если у вас есть законный +
в вашей строке URI (как %2B
).
Я считаю, что это лучший общий способ сделать это:
var x = qs("ks4day"); // 'Friday+September+13th'
x = x.replace(/\+/g, '%20'); // 'Friday%20September%2013th'
x = decodeURIComponent(x); // 'Friday September 13th'
Вот пример того, когда это может быть полезно:
var x = '1+%2B+1+%3D+2';
x = x.replace(/\+/g, '%20'); // '1%20%2B%201%20%3D%202'
x = decodeURIComponent(x); // '1 + 1 = 2'
Ответ 3
Для этого вы можете использовать функцию replace()
var dateString = 'Friday+September+13th';
var s = dateString .replace(/\+/g, ' ');
Ответ 4
Синтаксический анализ строк с использованием регулярных выражений часто приводит к множеству ошибок. К счастью, все современные браузеры предоставляют URLSearchParams
для URLSearchParams
обработки параметров из строк URL:
var params = new URLSearchParams(window.location.search);
var value = params.get('ks4day');
// "Friday September 13th"
Ps: есть также хороший polyfill для старых браузеров.