REMPLACEMENT D'UN CARACTÈRE DANS UN CHAINE

Signaler
Messages postés
101
Date d'inscription
vendredi 30 août 2002
Statut
Membre
Dernière intervention
5 novembre 2004
-
Messages postés
1
Date d'inscription
samedi 2 avril 2005
Statut
Membre
Dernière intervention
4 avril 2009
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/17590-remplacement-d-un-caractere-dans-un-chaine

Messages postés
1
Date d'inscription
samedi 2 avril 2005
Statut
Membre
Dernière intervention
4 avril 2009

Là Forcetiep, je pense que tu fais justement le contraire
Pour remplacer des "/" par des "",
préférer chaine.replace(/\//g,"\" );
Messages postés
1
Date d'inscription
mardi 24 janvier 2006
Statut
Membre
Dernière intervention
7 novembre 2008

plus simple encore :
par exemple pour remplacer des "/" par "" et qui marche sur tout les occurrences

replace(/\\/g,"\/" );
Messages postés
9
Date d'inscription
lundi 20 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2005

Hello à tous, j'ai fait cette fonction qui permet de paramétrer le controle sur lequel doit agir le remplacement, la chaine à chercher, la chaine de remplacement.

function replaceString(strCtrl, strToReplace, strToReplaceWith){
var ctrl = document.getElementById(strCtrl);
var strTemp = "";
for(i = 0; i < ctrl.value.length; i++){
(ctrl.value.charAt(i) == strToReplace) ? strTemp += strToReplaceWith : strTemp += ctrl.value.charAt(i);
}
ctrl.value = strTemp;
}


L'appel de la fonction se fait soit par lien soit par événement sur un élément de formulaire.
/!\ Attention : le premier argument de la fonction doit impérativement être entre guillemets simples (sinon ça déconne) et si vous cherchez à remplacer des guillemets simples ou des guillemets doubles, utilisez String.fromCharCode(indexUnicodeDuCaractere) sinon ça plante (même si vous utilisez le caractère d'échappement).

Dans l'appel ci-dessous j'ai remplacé la virgule par le point (utile dans un formulaire où on doit tester une valeur décimale par ex ou si on doit taper une instruction SQL) :

replaceString('PanQte', String.fromCharCode(44), String.fromCharCode(46));
Messages postés
106
Date d'inscription
jeudi 7 février 2002
Statut
Membre
Dernière intervention
30 novembre 2004

en effet Mickeymanu , bcp + clair!
merci pour le tuyau, je jette un coup d'oeil qd j'ai 5 minutes :)
Messages postés
3
Date d'inscription
lundi 17 juin 2002
Statut
Membre
Dernière intervention
21 août 2008

chaine = chaine.replace(/a/gi," ");
/a/gi --> regular expression
recherche tout les a dans "chaine" et les remplace par des espaces.
gi --> g = recherche globale
i = ignore la casse

Phildarvador renseigne toi sur les expressions régulières (ou regexp).
Si tu met qu'un caractère ou une chaine il ne sera cherché qu'une fois.
/toto/gi cherche tout les "toto" dans la chaine. "g" pour une recherche globale (donc tant qu'il n'est pas au bout de ta chaine de caractères) et "i" pour ignorer la casse.

A bientôt
P.A.: Reblochon je reprend en gros ce que tu dis mais j'espère l'avoir rendu un peu plus clair ^^)
Messages postés
49
Date d'inscription
lundi 28 avril 2003
Statut
Membre
Dernière intervention
27 septembre 2004

y a aussi

function Remplace(str,find,rep){
var reg = new RegExp(find,"gi")
return(str.replace(reg,rep));
}

Pas de boucle, pas de rappel de "replace" à chaque remplacement.
Si vous voulez garder la casse (minuscules/majuscules):
var reg = new RegExp(find,"g")

A+
Philippe
Messages postés
101
Date d'inscription
vendredi 30 août 2002
Statut
Membre
Dernière intervention
5 novembre 2004

y a aussi :

function Remplace(str,find,rep){
while(str.indexOf(find) > -1){str = str.replace(find,rep)}
return(str)
}
// exemple :
alert(Remplace("il etait uine fois dans les bois","e","a"))