problema Actionscript indexOf
-
22-08-2019 - |
Domanda
Quando creo un TextField in AS3 con righe impostato su true e equiparare il testo per dire:
"Hola \ r hola"
Non sono in grado di recuperare la posizione di indice \ r utilizzando la funzione indexOf, restituisce sempre -1
Qualcuno sa che cosa sto facendo male?
var txt:TextField;
txt.multiline = true;
txt.text = "Hola \r hola";
//txt now renders fine with the line break
trace(txt.indexOf("\r")); //Returns -1, should return the valid index of \r in txt
Soluzione
Dopo la risposta di Mikko ho dato una prova:
var textField:TextField = addChild(new TextField()) as TextField;
textField.multiline = true;
textField.text = "test \r test";
trace("result>" + textField.text.indexOf("\r"));
Questo codice traccia:
result>5
... proprio come previsto.
Se ancora non funziona per voi, in primo luogo provare a cercare per un altro personaggio di \ r, se questo funziona anche provare a cercare per \ n. Forse l'avanzamento riga si trasforma in qualche modo. (Quale sistema operativo stai?)
Altri suggerimenti
guarda a me che si sta cercando di ottenere l'indice della TextField al posto del TextField.text che ti interessa.
trace(txt.text.indexOf("\r"));
potrebbe funzionare un po 'meglio.
Ok, quindi prima le cose,
Non hai istanziati vostro campo di testo, è semplicemente fatto un riferimento.
In secondo luogo, indexOf, non è disponibile per la classe TextField, ma per la classe String, in modo da utilizzare il seguente e non dovreste avere più problemi. Si traccia bene per me.
var txt:TextField = new TextField();
addChild(txt);
txt.multiline = true;
txt.text = "Hola \r hola";
trace(txt.text.toString().indexOf("\r"));
Theo ha essenzialmente corretto, ma ho pensato di provare un renderlo un po 'più chiaro.
La speranza che ho potuto fare. Inoltre vorrei suggerire check-in espressioni regolari, che hanno semplici modi per trovare spazi vuoti o qualsiasi altro modello che si può pensare.