scr_StringField( string, real );
Codice: Seleziona tutto
///scr_StringField(String, Real);
/// String = <STRING1 + stopchar + STRING2 + stopchar... STRINGn + stopchar> ( String = stringa contenente le sotto stringhe ed i loro marcatori )
/// Real = Unsigned Integer ( Real = numero intero senza segno indicante la posizione della sottostringa che vogliamo sia estratta )
var str=argument0, pos=argument1, field=""; //
var sep=string_char_at(str, string_length(str)); // Dichiarazione variabili
var rbound=string_pos(sep, str); //
repeat(pos) // inizio ciclo di decurtazione ((se pos = 0 il ciclo sarà saltato)
{
str=string_delete(str,1,rbound); // taglio della coda dati
rbound=string_pos(sep, str); // calcolo prossima posizione
}
field=string_copy(str,1,rbound-1); // estrazione stringa richiesta
return field; // ritorno al codice con output String
Occorre passare obbligatoriamente tutti e due gli argomenti (uno di tipo String e l'altro Real) allo script; in particolare, dovrete fornire, nel primo argomento, una stringa formattata con tanti marcatori quante sono le sottostringhe incluse; i marcatori devono essere posti alla fine di ogni sottostringa e devono essere tutti rappresentati dallo stesso carattere. Ecco un esempio:
String = "Menu#Modifica#Visualizza#Strumenti#Help#";
La stringa qui sopra contiene le sottostringhe (in grassetto) e i rispettivi marcatori (#) alla fine di ognuna di esse.
Potete usare qualsiasi carattere volete per rappresenzare i marcatori. Altro esempio:
String = "Start.Options.Highscore.Credits.";
Se il secondo argomento viene posto al zero ( pos = 0 ) allora verrà restituita la prima stringa incontrata.
Potete annidare lo script per estrarre dati come in un array 2D o 3D (anche oltre se siete disposti a perdere performance) purchè usiate un carattere marcatore diverso per ogni dimensione.
String = "Spada ad una mano#Spada a due mani#Spada lunga#Spada corta#*Ascia ad una mano#Ascia a due mani#Ascia bipenne#Scure#*Bastone corto#Bastone Lungo#Verga#Staffile#*"
scr_StringField( scr_StringField( String, 0 ), 2) restituirà "Spada lunga"
Gli usi sono molti, spero vi sia utile.
N.B: Ho aggiornato lo script sostituendo il ciclo FOR con un REPEAT ed eliminando la variabile n.