Main Contents

Remplacer une valeur par une autre en Javascript

Coding, Javascript, Snippet

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

6 commentaires

  1. olympi avril 4, 2008 @ 17:59 Répondre à ce commentaire

    s/o/a/g noob !

    ;)

  2. Palleas avril 4, 2008 @ 19:27 Répondre à ce commentaire

    Le PERL ça compte pas !

  3. Hugo avril 4, 2008 @ 20:29 Répondre à ce commentaire

    Sympa le billet ;)

  4. ys avril 5, 2008 @ 22:21 Répondre à ce commentaire

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

    :-D

  5. Palleas avril 5, 2008 @ 22:58 Répondre à ce commentaire

    @ys : OSEF

  6. NoOne avril 6, 2008 @ 22:19 Répondre à ce commentaire

    T’a du le voir dans Reader mais bon : http://kevin.vanzonneveld.net/techblog/article/phpjs_licensing/

Suivre les commentaires de ce billet par RSS

Laisser un commentaire