Вам нужно искать какой-то вариант replaceAll
str = str.replace(/ /g, "+");
это регулярное выражение способ делать replaceAll.
function ReplaceAll(Source, stringToFind, stringToReplace) {
var temp = Source;
var index = temp.indexOf(stringToFind);
while (index != -1) {
temp = temp.replace(stringToFind, stringToReplace);
index = temp.indexOf(stringToFind);
}
return temp;
}
String.prototype.ReplaceAll = function (stringToFind, stringToReplace) {
var temp = this;
var index = temp.indexOf(stringToFind);
while (index != -1) {
temp = temp.replace(stringToFind, stringToReplace);
index = temp.indexOf(stringToFind);
}
return temp;
};
Вы пытаетесь сделать URL-кодировку строки? Если это так, лучше обратиться за помощью к этому, чем просто обработать пробелы. –
@ Lasse, я полагаю, в конечном итоге это то, что я пытаюсь сделать, поскольку строка, которую я хочу отформатировать, в конечном итоге станет частью URL-адреса. Однако, я думаю, этот вопрос по-прежнему стоит на собственном меррите, поскольку замена всех вхождений подстроки внутри строки не сразу очевидна. – DaveDev
Правильно, это было мое подозрение. Ответ на этот вопрос: use 'encodeURIComponent()'. Не пытайтесь взломать его самостоятельно, заменив строку; это намного сложнее, чем вы думаете. Это будет кодировать пробелы в '% 20', а не' + '. '% 20' является таким же достоверным (на самом деле более корректным, так как он работает в компонентах пути, тогда как' + 'означает только пространство в компонентах запроса), но если вы хотите, чтобы он выглядел чуть красивее, вы всегда можете сделать замену (/% 20/g, '+') 'впоследствии. Возможно, у вас возникнет соблазн использовать 'escape()', потому что он использует '+', но он также не использует все символы, отличные от ASCII, - избегайте. – bobince