0/5 (14 avis)
Vue 9 501 fois - Téléchargée 305 fois
Voici un fonction qui décode les (mots) de votre choix en lui passant en paramètre le nom du champ texte sur lesquel procéder. Champ texte en effet, puisqu'en AS2 nous n'avons à disposition que l'instruction "ReplaceText". - Concernant la recherche d'occurences et son remplacement en AS3, je vous renvoie ici : http://livedocs.adobe.com/flash/9.0_fr/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts_bak&file=00000084.html this.createTextField("my_txt2", this.getNextHighestDepth(), 8, 150, 320, 22); my_txt2.autoSize = true; my_txt2.text = "'|à|'|â|'|?|,<b>machin</b>,|%|&|"; Decode_carrets(my_txt2); my_txt.text = "'|à|'|â|'|?|,<b>machin</b>,|%|&|"; Decode_carrets(my_txt); //------------------------------------------------------------------------------------ function Decode_carrets(chaine){ //Tableau contenant le code à rechercher et celui qui sera son remplaçant. var Tab_code = new Array ( ["'", "'"], ["&" , "&"], [",<" , "<"], [">," , ">"] ); for(i=0; i<Tab_code.length; i++){//recherche avec tous les codes un par un var masq : String = new String(Tab_code[i][0]); var replace : String = new String(Tab_code[i][1]); var len_masq : Number = Tab_code[i][0].length; var pos_deb : Number = chaine.text.indexOf(masq); while (pos_deb >-1){ //recherche du même code sur la ligne entière chaine.replaceText(pos_deb, pos_deb+len_masq, replace); var pos_deb : Number = chaine.text.indexOf(masq); }//while }//for } //------------------------------------------------------------------------------------
15 juil. 2007 à 11:10
myText.split("chaîne à remplacer").joint("chaîne de remplacement");
Peg'
16 juil. 2007 à 01:52
Notons que j'utilise une seule commande flash "REPLACETEXT" au lieu de "SPLIT" et "JOIN" pour votre ligne de code qui oblige plus de cycle machine je pense.
Bref, c'est preque la même chose mais pas tout à fait ;-))
16 juil. 2007 à 12:37
Tu places ce bout de code dans un for en ayant inscrit ton tableau avant et pas besoin de While, ni de toute la tonne de code avant.
Ce qui donnerait :
# //Tableau contenant le code à rechercher et celui qui sera son remplaçant.
# var Tab_code = new Array ( ["'", "'"],
# ["&" , "&"],
# [",<" , "<"],
# [">," , ">"]
# );
# for (var i=0; i<Tab_code.length; i++) {
# myText.split(Tab_code[i][0]).join(Tab_code[i][1]);
# }
voili, rien de plus simple ! Et sèrieusement c'est pas du tout pareil ...
Peg'
16 juil. 2007 à 15:52
16 juil. 2007 à 19:36
Le résultat est flagrant !
- En effet, j'ai le regret de t'informer que ton code ne décode qu'une seule occurence de la phrase à tester (après modifs puisqu'il ne peut que travailler sur des chaînes et non sur directement sur un champ texte comme le mien).
Mon code recherche dans la phrase toutes les occurences et les remplacent à la volée puis refait cette opération pour tous les mots à chercher dans la phrase. D'où le WHILE (pour toute la phrase) et le FOR pour tous les mots à chercher.
En conclusion, je pense qu'avant de parler, il faut analyser la problèmatique et ensuite étudier le code donné en réponse. (je l'applique à moi-même !). Je pensais que mon code était assez explicite ! cela prouve qu'il faut que je donne plus de commentaires à mes codes à l'avenir (même en classe expert). Mon prof me disait que les maths, ce n'était pas de la cuisine (lol).
Pour démonstration j'ai comparé nos 2 codes:
Nb: ton code ne décode rien tel qu'il est, (tu ne l'a pas testé je pense !).
Il faut passer par un chaine pour qu'il fonctionne.
//-----------------------------------------------------------------------
// Ton code :
this.createTextField("myText", this.getNextHighestDepth(), 8, 150, 320, 22);
myText.autoSize = true;
//myText.text = "'|à|'|â|'|?|, machin ,|%|&|";
// phrase de départ à décoder :
myText.text ="aazerty,<lm>,''azerty'";
chaine = myText.text;
trace(chaine);
//Tableau contenant le code à rechercher et celui qui sera son remplaçant.
var Tab_code = new Array ( ["'", "1"],
["azer" , "2"],
[",<", "3"],
[">," , "4"]
);
for (var i=0; i<Tab_code.length; i++) {
//ma ligne de code proposée par pegase31 :
chaine2 = chaine.split(Tab_code[i][0]).join(Tab_code[i][1]);
}
trace(chaine2);
// résultat : 1 seul mot décodé (>,) !!!!!!
//donne : aazerty,<lm4''azerty'
//---------------------------------------------------------------
// mon code :
this.createTextField("my_text", this.getNextHighestDepth(), 8, 150, 320, 22);
my_text.autoSize = true;
// phrase de départ à décoder :
my_text.text = "aazerty,<lm>,''azerty'";
Decode_carrets(my_text);
//------------------------------------------------------------------------------------
function Decode_carrets(champ_texte){
//Tableau contenant le code à rechercher et celui qui sera son remplaçant.
var Tab_codes = new Array ( ["'", "1"],
["azer" , "2"],
[",<", "3"],
[">," , "4"]
);
for(i=0; i<Tab_codes.length; i++){//recherche avec tous les codes un par un
var masq : String = new String(Tab_codes[i][0]);
var replace : String = new String(Tab_codes[i][1]);
var len_masq : Number = Tab_codes[i][0].length;
var pos_deb : Number = champ_texte.text.indexOf(masq);
while (pos_deb >-1){ //recherche du même code sur la ligne entière
champ_texte.replaceText(pos_deb, pos_deb+len_masq, replace);
var pos_deb : Number = champ_texte.text.indexOf(masq);
}//while
}//for
// Résultat tout a été décodé :
//donne : a2ty3lm4112ty1
}
//------------------------------------------------------------------------------------
En conclusion, rien n'est acquis en prog ... !
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.