2010-07-30 5 views
1

Je tente de supprimer certains caractères non sécurisés d'une chaîne mais je crois que j'ai un problème avec mon objet RegExp. Ce que j'essaie de faire ci-dessous est s'il y a des caractères dont la longueur codée est supérieure à 3 caractères qu'ils devraient être remplacés par un espace. Donc, si la valeur codée est %3D, ce qui est =, c'est correct d'avoir dans ma chaîne. Mais si c'est une apostrophe %E2%80%99 il devrait être remplacé par un espace.Suppression de certains caractères d'une chaîne

val = "Angelina’s"; 
valEnc = encodeURIComponent(val); 

for(var i = 0; i < val.length; i++){ 
    var a = val.substr(i,1); 
    if(encodeURIComponent(a).length > 3){ 
     console.log(a, encodeURIComponent(a)); 
     var re = new RegExp(encodeURIComponent(a),"ig"); 
     valEnc.replace(re," "); 
    }; 
}; 

console.log(decodeURIComponent(valEnc)); 

Ce code fonctionne et me enregistre les caractères indésirables, mais il ne peut pas les remplacer par des espaces, ce que je fais mal? Merci.

+0

« Donc, si la valeur encryted ... » Il est « codé » – NullUserException

+0

@NullUserException erreurs de minuit, merci ... – Sinan

Répondre

2

Vous semblez utiliser des expressions régulières inutilement ici. Une façon de le faire est de construire la chaîne de résultat un caractère à la fois:

val = "Angelina’s"; 
valEnc = ""; 

for(var i = 0; i < val.length; i++){ 
    var a = val.substr(i,1); 
    var e = encodeURIComponent(a); 
    if(e.length <= 3){ 
     valEnc += e; 
    } 
} 

console.log(decodeURIComponent(valEnc)); 
+0

fixes Absolument à droite, je devrais mieux dormir et continuer avec un cerveau frais. Merci mec... – Sinan

Questions connexes