Forums Développement Multimédia

Aller au contenu

traitement de chaine

CODE Actionscript

7 réponses à ce sujet

#1 gilleschomel

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 421 messages

Posté 26 September 2008 - 08:28 AM

Bonjour à tous:

J'ai besoin de générer une chaine de n caractères: que me conseillez-vous?

Une fonction du genre:

functiun genereChaine("a",27) qui génèrerait une chaine de 27 a.

Action Script

functiun genereChaine(caractere: String, nombre: int)
{
var i: int;
var chaine: String;
chaine="";
for (i=0;i<nombre;i=i+1)
{
chaine=chaine+caractere;
}
return (chaine);
}
///////////////
///////////////
Vous avez peut-être plus simple?

#2 tibibi0508

  • Members
  • PipPipPipPipPipPipPipPip
  • 1704 messages

Posté 26 September 2008 - 08:41 AM

Salut,

Quel est l'intérêt de générer une chaine de 27 caractères identiques? Pourrais-tu donner plus de précisions icon_biggrin.gif

++icon_wink.gif

#3 armetiz

  • Members
  • PipPipPipPipPipPipPipPip
  • 623 messages

Posté 26 September 2008 - 08:49 AM

La concatenation de chaine avec le "+" est déconseillé au niveau des performances

Action Script


for (i=0;i<nombre;i=i+1)
{
chaine=chaine+caractere;
}

Choisit plutôt

Action Script


for (i=0;i<nombre;i=i+1)
{
chaine=chaine.concat (caractere);
}

En effet, le "+" crée une nouvelle instance de String pour faire la concaténation, sur une boucle de 100 nombres, tu vas donc créer 100 nouveaux String... Même si le GC passera, en attend qu'il passe la ram va gonfler.
Toute manière, tu devrai avoir un Warning à la compilation pour te le signaler.

#4 Monz

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 3541 messages

Posté 26 September 2008 - 08:55 AM

Citation (tibibi @ Sep 26 2008, 09:41 AM) Voir le message
Salut,

Quel est l'intérêt de générer une chaine de 27 caractères identiques? Pourrais-tu donner plus de précisions icon_biggrin.gif

++icon_wink.gif


D'accord avec Tibibi. icon_idea.gif -nous !

Mais sinon, perso je ferai comme ceci :

Action Script


function genereChaine(caractere: String, nombre: int):String
{
var chaine: String = new String();

while (chaine.length < nombre)
{
chaine=chaine.concat(caractere);
}
return (chaine);
}



#5 gilleschomel

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 421 messages

Posté 26 September 2008 - 09:08 AM


Merci pour cette subtilité de devoir préférer la méthode concat à l'opérateur +: J'en tiendrai compte.

Sinon, pourquoi vouloir générer une chaine de n caractères ?

icon_evil.gif ... parce que j'en ai envie !

pourquoi les Chinois envoient-ils des Taikonautes dans l'espace?

pourquoi ..? pourquoi pas ?

En l'occurence, jai besoin de formater une chaine saisie par l'utilisateur à 532 caractères: donc je dois la compléter avec une instruction du genre:

chaineSaisieParlUtilisateur = chaineSaisieParlUtilisateur + genereChaine(" ", 532 - chaineSaisieParlUtilisateur.length);

voilà tout icon_smile.gif


#6 gilleschomel

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 421 messages

Posté 26 September 2008 - 09:19 AM


Autant pour moi:

Si j'ai bien compris la subtilité concat, je dois préférer:

chaineSaisieParlUtilisateur = chaineSaisieParlUtilisateur.concat(genereChaine(" ", 532 - chaineSaisieParlUtilisateur.length));

J'ai bon là?


#7 armetiz

  • Members
  • PipPipPipPipPipPipPipPip
  • 623 messages

Posté 26 September 2008 - 09:19 AM

monz t'as filé une solution...

#8 gilleschomel

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 421 messages

Posté 26 September 2008 - 09:22 AM

Oui: j'ai exploité littéralement son code: Merci Monz icon_smile.gif



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

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