Remplacer une valeur par une autre en Javascript
L’objet String en javascript dispose d’une méthode replace() dont l’utilisation est la suivante :
window.onload = function() {
var s = "toto";
alert(s.replace("o","a"));
}
De cette manière, on cherche à obtenir “tata”, à la place de “toto”. Seulement voilà, le replace() de javascript s’arrête à la première occurrence trouvée ce qui, dans notre exemple, donnera “tato”, peu pratique, n’est-ce pas ?
Une méthode possible pour pallier à ce problème est de “splitter” votre chaine de caractère à l’aide de split() (pour en faire un Array, à la manière de explode() en php), puis de la retransformer en chaine de caractère à l’aide de join() :
function str_replace(texte,varIn,varOut) {
return texte.split(varIn).join(varOut);
}
Vous trouvez ça suffisant ? Moi non en tout cas, c’est une des choses que je n’aime pas dans la synthaxe php, dans le cas du str_replace() par exemple. Pour que ce soit (pour ma part) un peu plus satisfaisant, il suffit d’utiliser le système de pseudo-héritage fournit par Javascript, à l’aide de prototype :
String.prototype.replaceAll = function(varIn,varOut) {
if(this.indexOf(varIn)==-1) return this;
return this.split(varIn).join(varOut);
}
Et ainsi pouvoir faire :
window.onload = function() {
var s = "bonjour plop tu plop va plop bien ?";
alert(s.replaceAll("plop","pas-plop"));
}
Désolé pour les phrases d’exemple, j’avoue ne pas avoir été vraiment inspiré de ce coté la.
Palleas @ avril 4, 2008


s/o/a/g noob !
Le PERL ça compte pas !
Sympa le billet
(progn
(defparameter *button* (make-instance ‘button :value “Huhu”))
(setf (on-click-of *button*) (iambda () (run-js “alert(\”Ça c’est un évènement généré par le serveur.\”)”)))
(add *button* (root)))
@ys : OSEF
T’a du le voir dans Reader mais bon : http://kevin.vanzonneveld.net/techblog/article/phpjs_licensing/