401 votes

Remplacer des espaces avec des traits de soulignement dans JavaScript?

J'essaie d'utiliser ce code pour remplacer les espaces avec _, cela fonctionne pour le premier espace de la chaîne mais toutes les autres instances des espaces restent inchangées. Quelqu'un sait pourquoi?

 function updateKey()
{
    var key=$("#title").val();
    key=key.replace(" ","_");
    $("#url_key").val(key);
}
 

788voto

Crescent Fresh Points 54070

Essayez .replace(/ /g,"_");

Edit: ou .split(' ').join('_') si vous avez une aversion pour le REs

Edit: John Resig dit:

Si vous êtes à la recherche et de remplacement à travers une chaîne statique de recherche et un statique remplacer c'est plus rapide pour effectuer l'action avec .split("match").join("remplacer") - ce qui semble contre-intuitif, mais il parvient à travailler de cette façon dans la plupart des les navigateurs modernes. (Il y a des changements aller à la place de nettement améliorer la performance de .replace (//g, "remplacer") dans la prochaine version de Firefox, de sorte que la déclaration antérieure ne sera pas le cas pour long.)

77voto

Adam Points 2408

essaye ça:

 key=key.replace(/ /g,"_");
 

ça va faire une recherche / remplacement global

javascript remplacer

65voto

Rich Points 16818

Pour répondre à la question de Prasanna ci-dessous:

Comment remplacez-vous plusieurs espaces par un seul espace en Javascript?

Vous utiliseriez la même fonction (replace) avec une expression régulière différente. L'expression pour les espaces est "\ s" et l'expression pour "1 fois ou plus" est le signe plus, donc vous devez simplement remplacer la réponse d'Adam par ce qui suit:

 key=key.replace(/\s+/g," ");
 

39voto

Fizer Khan Points 4128

Tu peux essayer ça

  var str = 'hello     world  !!';
 str = str.replace(/\s+/g, '-');
 

Cela supprimera même plusieurs espaces avec le simple '-'.

18voto

Inez Points 678

J'ai créé le test de performance JS pour cela http://jsperf.com/split-and-join-vs-replace2

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X