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);
}
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.)
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,"_");
Tu peux essayer ça
var str = 'hello world !!';
str = str.replace(/\s+/g, '-');
Il remplacera même plusieurs espaces par un simple '-'.
J'ai créé le test de performance JS pour cela http://jsperf.com/split-and-join-vs-replace2
Remplacer espaces avec soulignement
var str = 'How are you';
var replaced = str.split(' ').join('_');
Output: How_are_you
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.
};
Juste en utilisant replace
:
var text = 'Hello World';
new_text = text.replace(' ', '_');
console.log(new_text);