2009-08-14 4 views
3

Я предполагаю, что это простая задача, но я только учусь ...Как заменить несколько строк с заменой() в JavaScript,

У меня есть это:

var location = (jQuery.url.attr("host"))+(jQuery.url.attr("path")); 
locationClean = location.replace('/',' '); 

locationArray = locationClean.split(" "); 

console.log(location); 
console.log(locationClean); 
console.log(locationArray); 

И здесь это то, что я получаю в Firebug:

stormink.net/discussed/the-ideas-behind-my-redesign 
stormink.net discussed/the-ideas-behind-my-redesign 
["stormink.net", "discussed/the-ideas-behind-my-redesign"] 

По какой-то причине замена происходит только один раз? Нужно ли использовать Regex вместо «/ g», чтобы повторить его? И если да, то как бы указать «/» в Regex? (Я очень мало понимаю, как использовать Regex).

Спасибо всем.

+0

Дерьмо! Я понял это сразу после того, как спросил ... жаль всех! Больше не повторится ... (надеюсь). –

+6

Тогда ответьте на свой вопрос. – jason

ответ

3

ЗАМЕНИТЬ метод заменяет только первое появление, когда вы используете строку в качестве первого параметра. Вы должны использовать регулярное выражение для замены всех мест где:

locationClean = location.replace(/\//g,' '); 

(. Так как символы прорезных используются для определения границ регулярного выражения буквально, вам нужно слеш внутри excpression с обратным косой чертой)

Тем не менее, почему вы не просто разделяете символ '/' вместо этого?

5

Используйте шаблон вместо строки, которые вы можете использовать с «глобальной» модификатором

locationClean = location.replace(/\//g,' '); 
2

Вы можете непосредственно split с помощью символа / в качестве разделителя:

var loc = location.host + location.pathname, // loc variable used for tesing 
    locationArray = loc.split("/"); 
0

Это можно исправить из вашего javascript.

СИНТАКСИС

stringObject.replace(findstring,newstring) 

FindString: Обязательный. Задает строковое значение для поиска. Чтобы выполнить глобальный поиск, добавьте флаг «g» к этому параметру и выполните поиск без учета регистра, добавьте флаг «i».

newstring: Обязательно. Задает строку заменить найденное значение из FindString

Вот что ур код Шуд выглядеть следующим образом:

locationClean = location.replace(new RegExp('/','g'),' '); 
locationArray = locationClean.split(" "); 

njoi»