2009-08-14 10 views
3

Je devine que c'est un problème simple, mais je suis en train d'apprendre ...Comment remplacer plusieurs chaînes avec le remplacer() en Javascript

J'ai ceci:

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); 

Et ici est ce que je reçois dans 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"] 

Donc, pour une raison quelconque, le remplacement ne se produit qu'une seule fois? Ai-je besoin d'utiliser Regex à la place de "/ g" pour le faire répéter? Et si oui, comment pourrais-je spécifier un '/' dans Regex? (Je comprends très peu de comment utiliser Regex).

Merci à tous.

+0

Merde! Je l'ai eu juste après que j'ai demandé ... désolé tout le monde! Ne se reproduira plus ... (j'espère). –

+6

Puis répondez à votre propre question. – jason

Répondre

3

Le remplacement La méthode remplace uniquement la première occurrence lorsque vous utilisez une chaîne comme premier paramètre. Vous devez utiliser une expression régulière pour remplacer toutes les occurences:

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

(. Comme les caractères slash sont utilisés pour délimiter l'expression régulière littérale, vous devez échapper à la barre à l'intérieur du excpression avec une barre oblique inverse)

Cependant, pourquoi ne faites-vous pas simplement la division du caractère '/'?

5

Utilisez un modèle au lieu d'une chaîne, que vous pouvez utiliser avec le modificateur « global »

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

Vous pouvez directement split en utilisant le caractère / comme séparateur:

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

Ceci peut être réparé à partir de votre javascript.

SYNTAX

stringObject.replace(findstring,newstring) 

FindString: requis. Spécifie une valeur de chaîne à rechercher. Pour effectuer une recherche globale, ajoutez un drapeau 'g' à ce paramètre et pour effectuer une recherche insensible à la casse, ajoutez un drapeau 'i'.

chaîne de diffusion: Obligatoire. Indique la chaîne pour remplacer la valeur trouvée de findString

Voici ce que le code ur shud ressembler à:

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

njoi »