ciao,
dai un'occhiata a String.split()
Jaco
Ho scritto una funzione che sarà molto utile agli sviluppatori flash, non sò se già la conoscete, si chiama string tokenizer.
Grazie a questa funzione potete creare un'array da una variabile.
Ad esempio: avete una variabile tipo:
hello="hello,world,ciccio,pippo,claudio,sergio,fra nco"
e vorreste un array contenente tutte le parti (tokens) ordinate, niente di più semplice basterà copiare ed incollare queste righe di codice:
//-----------------------------------------------------------------------------
function setIndexes(phrase:String, sep:String) {
for (i=0; i<phrase.lastIndexOf(sep); i++) {
index = (phrase.indexOf(sep, i));
if (index != index_arr[index_arr.length-1]) {
index_arr.push(index);
}
}
return (index_arr);
}
stringTokenizer = function (phrase:String, sep:String) {
index = 0;
if (sep.length>0) {
index_arr = new Array("0");
} else {
index_arr = new Array();
}
var indexNames_arr:Array = new Array();
setIndexes(phrase, sep);
for (i=0; i<index_arr.length; i++) {
if (i == 0) {
indexNames_arr.push(phrase.slice(index_arr[i], index_arr[i+1]));
} else {
indexNames_arr.push(phrase.slice(index_arr[i]+sep.length, index_arr[i+1]));
}
}
return (indexNames_arr);
};
//--------------------------------------------------------------------------
poi semplicemente richiamando la funzione e passandogli come parametri (nome variabile,separatore) ricaverete un array completo
esempio
hello="hello,world,ciccio,pippo,claudio,sergio,fra nco";
world=new Array();
world=stringTokenizer(hello,",")
//Risultato=hello,world,ciccio,pippo,claudio,sergio, franco
per domande contattatemi o qui sul forum o
all'email ciampini.fabrizio@gmail.com
ciao,
dai un'occhiata a String.split()
Jaco
Grazie a questa in 2 secondi ti crei un array fatto per bene.
Ora te ne spiego l'utilità, quando si caricano le variabili da un file esterno come ad esempio un xml fa comodo inserire valori tutti in una stessa stringa
es:
<xml.........
<bla bla bla.......
<param name="lang" value="it,en,es,fr,de,ecc.ecc."/>
quando lo vado a caricare io ho una stringa intera, ma mi serve un array per poter usare le variabili, così grazie a stringTokenizer creo un array
es:
lingue=new Array();
lingue=stringTokenizer(xml.firstChild.childNodes[0].attributes.value("per esempio.. ndr"),",")
così se mi serve la lingua numero 1 nell'ordine non devo fare altro che scrivere
trace(lingua[0])
e mi restituirà it
adesso ne capisci l'utilità!
Funziona bene è già testato, l'ho voluto postare se tante volte servisse a qualcuno
a me è molto utile
Scusa ma nemmeno io come Jaco non capisco.![]()
Forse mi sfugge qualcosa ma modificando il tuo esempio ottengo la stessa cosa:
hello="hello,world,ciccio,pippo,claudio,sergio,fra nco";
world=new Array();
world=hello.split(',');
trace(world.length);
o sono fuso pure io o non capisco la differenza con lo split...Originariamente Scritto da lateonight
bizio preferisci usare una funzione piuttosto che una caratteristica intrinseca nelle funzionalità dell'array (vedi split)?
ciao,
non voglio togliere nulla al tuo lavoro, ma ancora mi sfugge il vantaggio di usare questo codice rispetto a split. Tieni anche presente che una function come la tua ha bisogno di essere referenziata, mentre split e' un metodo di array, oggetto built-in, che puo' essere usato senza problemi di scoping.
In passato mi sono occupato dei tempi di esecuzione di split, che col player 5 erano veramente alti, cosi' proposi un mio codice che faceva le stesse cose in meta' tempo.
Il vantaggio consisteva proprio in quello: risparmiare tempo.
Era il 2001, sono passati quasi cinque anni da allora e in MM non sono stati a guardare, hanno migliorato il player fino a rendere split la scelta principale per scopi come quelli presi in esame in questo topic.
Fai una cosa, crea un'unita' di test del tuo codice, eseguilo almeno un migliaio di volte prendendo i tempi iniziale e finale, poi confrontalo con codice basato su split e vedi quanto ti conviene. Ti dico subito che la presenza di statement condizionali penalizzera' fortemente le prestazioni.
Un'altra cosa che potresti fare (in tema di codice mx) e' p.e. visitare questo sito:
http://www.layer51.com/proto/
Jaco