Remplacement d'un caractère dans un chaine

Soyez le premier à donner votre avis sur cette source.

Snippet vu 41 548 fois - Téléchargée 28 fois

Contenu du snippet

Hello,

J'ai remarqué il y a peu que la fonction str.replace("x","x"); ne fonctionne que pour la première occurence du caractère que l'on souhaite remplacer... Pas très pratique, donc voici une fonction qui remplace tous les caractères trouvés dans une chaine (là c'est une apostrophe).

Source / Exemple :


<html>
<head>
<script language="Javascript">
function Remplacer()
{
var a, tmp;
tmp = "";
a = document.formtest.texttest.value;

for(var i = 0; i < a.length; i++)
{
tmp = tmp + a.charAt(i);

	if (a.charAt(i) == "'")
	{
	tmp = tmp.replace("'","&#39;");
	}
}

a = tmp;
alert(a);
}
</script>
</head>

<body>
<form name="formtest">
<input type="text" name="texttest">
<input type="button" name="bnttest" value="Change!" onclick="Remplacer();">
</form>
</body>
</html>

A voir également

Ajouter un commentaire

Commentaires

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 ^^)
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.