web-dev-qa-db-fra.com

Remplacement d'espaces par des traits de soulignement en JavaScript?

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

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

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

Modifiez : ou .split(' ').join('_') si vous avez une aversion pour les RE.

Modifier : John Resig a dit :

Si vous recherchez et remplacez par une chaîne avec une recherche statique et une substitution statique, il est plus rapide d'exécuter l'action avec .split ("match"). Join ("replace") - ce qui semble contre-intuitif mais réussit à fonctionner De cette façon, dans la plupart des navigateurs modernes. (Des modifications sont en cours pour améliorer considérablement les performances de .replace (/ match/g, "replace") dans la prochaine version de Firefox. L'énoncé précédent ne sera donc plus le cas longtemps.)

621
Crescent Fresh

essaye ça:

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

ça va faire une recherche globale/remplacer

javascript replace

61
Adam

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

Comment remplacer 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 blancs est \s et l'expression "1 fois ou plus" est + le signe plus. Vous devez donc remplacer la réponse d'Adam par la suivante:

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

Tu peux essayer ça

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

Il remplacera même plusieurs espaces par un simple '-'.

20
Fizer Khan

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

17
Inez

Remplacer espaces avec soulignement

var str = 'How are you';
var replaced = str.split(' ').join('_');

Output: How_are_you

11
Arshid KV

Je sais que c'est vieux mais je n'ai vu personne mentionner l'extension du String prototype.

String.prototype.replaceAll = function(search, replace){
    if(!search || !replace){return this;} //if search entry or replace entry empty return the string
    return this.replace(new RegExp('[' + search + ']', 'g'), replace); //global RegEx search for all instances ("g") of your search entry and replace them all.
};
4
BlueEyesWhiteDragon

Juste en utilisant replace:

var text = 'Hello World';
    
new_text = text.replace(' ', '_');
    
console.log(new_text);
3
Vibhu kumar