Forums Développement Multimédia

Aller au contenu

débutant de chez débutant

CODE Actionscript

4 réponses à ce sujet

#1 gilleschomel

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 421 messages

Posté 29 September 2008 - 09:46 AM

Bonjour à tous:

Soit la chaine ch="J'ai croisé Tata aujourd'hui";

Comment vous y prenez-vous pour changer par le code un caractère de cette chaine? pour obtenir, par exemple:

ch="J'ai croisé Tati aujourd'hui";

sachant que la lettre à remplacer est à l'indice 15.

J'aurais aimé une instruction du genre ch.replace(15,"i");

icon_mad.gif

Manque de pot, le code suivant:

Action Script

var ch:String;
ch="J'ai croisé Tata aujourd'hui";
ch.replace(15,"i");
trace (ch);
//////////

me renvoit "J'ai croisé Tata aujourd'hui";

Bien sûr, je pourrais recourir à du lourd ( icon_evil.gif voire, très lourd):

ch=ch.slice(0,14)+"i"+ch.slice(16);

mais je compte sur les codeurs chevronnés qui fréquentent ce forum pour me donner la formule élégante et légère qui convient à ce petit défi de programmation.

#2 gilleschomel

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 421 messages

Posté 29 September 2008 - 10:00 AM

L'instruction ch[15]="i" aurait été parfaite, mais elle plante également icon_evil.gif

#3 antinua

  • Members
  • PipPipPipPipPipPipPipPip
  • 1067 messages

Posté 29 September 2008 - 10:24 AM

Bonjour.

Un remplacement au niveau du caractère est faisable avec replace() et une regexp :

Action Script

var ch:String;
ch="J'ai croisé Tata aujourd'hui";
ch = ch.replace(/^(.{15})./,"$1i");
trace (ch);
//////////
Pour explication :
/^(.{15})./ représente une regexp. On peut la décomposer comme suis:
    ^ A partir du debut.
    (.{15}) N'importe quel caractère, 15 fois, placés dans un groupe.
    . N'importe quel caractère.
"$1i" est la chaine de replacement, sachant que $n représente le n-ieme groupe défini dans la regexp.
Cette chaine correspond donc a 1°groupe-i, soit les 15 premiers caractères suivi de i.
On remplace donc les 15+1 premiers caractères par les 15 premiers caractères + 'i'.

Bonne journée.

#4 MrPatate

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 84 messages

Posté 29 September 2008 - 11:36 AM

Hello PentaMatch,
tu n'étais pas très loin, c'est juste que la méthode replace ne modifie pas la variable originale.

il faut donc réaffecter le résultat de la méthode replace dans la variable ch :

Action Script

ch = ch.replace(15,"i");


#5 antinua

  • Members
  • PipPipPipPipPipPipPipPip
  • 1067 messages

Posté 29 September 2008 - 11:42 AM

Bonjour.

Desolee, mais non.
replace() prend en premier paramètre un pattern, c'est a dire une String ou un Regexp. Si tu lui passe un objet d'un autre type, il convertira l'objet en string grâce a toString().
Autrement dit, ch.replace(15,"i") cherche "15" dans la chaine ch et le remplace par "i"

Bonne journée.



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP