2010-08-16 7 views
2

Ce qui serait un bon moyen de le faire. J'ai une chaîne avec beaucoup de "& lt;" et & gt; et je veux les remplacer par < et>. Donc, je l'ai écrit ceci:comment simplifier ce code

var str = &lt;/text&gt;&lt;word34212&gt; 
var p = str.replace('\&lt\;','\<'); 
var m = p.replace('\&gt\;','\>'); 

mais qui vient de faire la première instance de chaque - et les instances suivantes de & lt;/& gt; ne sont pas remplacés. J'ai considéré d'abord en comptant les instances du & lt; puis en boucle et en remplaçant une instance du code à chaque itération ... puis en faisant la même chose pour le & gt; mais évidemment c'est assez long.

Quelqu'un peut-il suggérer une façon plus simple de faire cela?

Répondre

6

Pour remplacer plusieurs vous utilisez occurances une expression régulière, de sorte que vous pouvez spécifier l'indicateur global (g):

var m = str.replace(/&lt;/g,'<').replace(/&gt;/g,'>'); 
4

Extrait de: http://www.bradino.com/javascript/string-replace/

La fonction JavaScript pour chaîne Remplacer remplace la première occurrence dans la chaîne. La fonction est similaire à la fonction php str_replace et prend deux paramètres simples. Le premier paramètre est le modèle à trouver et le deuxième paramètre est la chaîne à remplacer le modèle par lorsque trouvé. La fonction javascript n'a pas Remplacer tout ...

Pour vous ReplaceAll devez faire un peu différemment . Pour remplacer toutes les occurrences dans la chaîne, utilisez le g modificateur comme ceci:

str = str.replace(/find/g,”replace”) 
+0

Brillant merci à tous. J'ai fait google ceci! Doit apprendre REGEX correctement. –

0

Je chose un tableau associatif [regex -> remplacement] et une itération le ferait

2

vous devez utiliser le modificateur global:

var p = str.replace(/\&lt\;/g,'\<'); 
Questions connexes