Remplacement caractères spéciaux par équivalents ASCII (+regexp)

Signaler
Messages postés
3
Date d'inscription
mercredi 3 mai 2006
Statut
Membre
Dernière intervention
4 mai 2006
-
Messages postés
3
Date d'inscription
mercredi 3 mai 2006
Statut
Membre
Dernière intervention
4 mai 2006
-
Bonjour,

je viens d'apprendre les bases des expressions rationnelles.
Je programme actuellement une variante du chiffrement de Vigenère.
Pour cela, j'ai besoin de formater une chaîne de caractères afin qu'elle ne contienne plus que des chiffres, majuscules, minuscules et @ # ; ? ! ( )

Je souhaiterais donc remplacer tous les caratères spéciaux par leurs équivalents ASCII.

é devient é à à etc.

J'ai tenté en vain :

texte = texte.replace(/[^0-9A-Za-z</>-@#;?!()]/gi,"&#" + texte.charCodeAt(texte.indexOf(this)) + ";") ;

mais ça ne marche pas...

Pourriez-vous m'aider...?

J'en profite si y'en a qui s'y connaisse en crypto de bien vouloir jeter un coup d'oeil à cette question :
forums.futura-sciences.com/showthread.php?p=594071
A voir également:

4 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
bonjour,




>>texte = texte.replace(/[^0-9A-Za-z</>-@#;?!()]/gi,"&#" + texte.charCodeAt(texte.indexOf(this)) + ";") ;

 </>, regexp est pommé : <\/> irait mieux. 
y a-til d'autres caractères à "échapper" ? : ( )  ...



>>texte.charCodeAt(texte.indexOf(this)


this ? c'est quoi ?
je pense que ça voudrait être le code ascii du caractère à remplacer ?
pas convaincu que cela puisse fonctionner dans une expression régulière
( mais peut-être me trompe-je ? )
faire l'équivalent "manuellement" ( avec une boucle ) ?



Cordialement      Bul.   
Site
Messages postés
3
Date d'inscription
mercredi 3 mai 2006
Statut
Membre
Dernière intervention
4 mai 2006

Merci de ta réponse.



1) "this ? c'est quoi ?"



Bah, "this" serait l' « objet » en question.



Pour donner un exemple, j'ai codé pour un livre d'or :







smiley est une fonction javascript. Le this.alt fait référence au "alt"
de celui-ci, de cet "objet". J'aurai pu mettre this.scr, ç'aurait
renvoyer le lien.



2) faire l'équivalent "manuellement" ( avec une boucle ) ?



Ce serait ultra-long, ça voudrait dire récupérer tous les codes ASCII
des caractères usuels et faire un tableau immense. D'autre part, ça
veut dire qu'il y aurait des caractères non-pris en compte. Si un jour,
j'ai envie d'écrire en idéogrammes (on peut toujours avoir des idées
bizarres), bah j'écrirai 数独 (pour Sudoku) et ça coderait
&#25968;&#29420; sans renvoyer d'erreur.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
>>serait l' « objet » en question.

ben oui ? mais lequel ?...
je me cite: je pense que ça voudrait être le code ascii du caractère à remplacer ?...

>>Ce serait ultra-long, ça voudrait dire récupérer tous les codes ASCII
ben non... je proposais d'essayer un replace sur chaque caractère !
car, je répète, m'étonnerait que dans une expression régulière
on puisse utiliser un "this dynamique".

cordialement Bul. Site
Messages postés
3
Date d'inscription
mercredi 3 mai 2006
Statut
Membre
Dernière intervention
4 mai 2006

Trouvé !!



var expr = new RegExp("[^0-9a-z</>-@#;?!()]","gi");



(caractère d'échappement de / pas nécessaire)



texte = texte.replace(expr, function($0, $1) { return ("&#"+texte.charCodeAt($1)+";"); } );



$1 désigne la position