Errore JSL Argomenti insufficienti nella valutazione di "Contiene"Ho un elenco di "nomi di file" e voglio creare un sottoelenco solo di quelli che i loro nomi contengono/terminano in "_2020". Sto usando una Regex per selezionare quei file: "_\d{4}".Tuttavia ricevo un errore "Non abbastanza argomenti".
Se provo i ListID ottengo l'elenco previsto dei nomi di file, non è vuoto. Apprezzerò qualsiasi suggerimento su come correggere il mio script.
L'errore di registro è: argomenti insufficienti nell'accesso o nella valutazione di 'Contains' , Contains/*###*/(Regex( Char( ListIDs[i] ), "_\d{4}" ))
Show (ListIDs);<BR />ListIDs = {"2020-06","practice", "file1_2020", "file2_2020"}<BR /><BR />SelectedIDs = {};
For (i = 1, i <= N Items (ListIDs), i++,
If (Contains(Regex(Char(ListIDs[i]), "_\d{4}")),
Insert Into (SelectedIDs, i);
);
);
N Items (SelectedIDs);
Print(SelectedIDs);ScriptingRe: Errore JSL Argomenti insufficienti nella valutazione di 'Contiene'Ciao Mark,
Grazie mille, mi piace la tua soluzione.Sono sempre stupito quando la soluzione è un'espressione negativa.
Piace " Not( Manca( Regex( ListIDs[i], "_\d{4}" ) ) ".
Re: Errore JSL Argomenti insufficienti nella valutazione di 'Contiene'ListIDs[SelectedIDs];
Re: Errore JSL Argomenti insufficienti nella valutazione di 'Contiene'Penso che tu possa semplificare il test. Non hai bisogno di Contains() e il suo utilizzo è problematico quando il suo primo argomento è un valore mancante. Questa modifica utilizza direttamente il risultato della funzione Regex(). (Ho riformattato lo script per rendere la sua struttura più facile da vedere.)
ListIDs = { "2020-06", "practice", "file1_2020", "file2_2020" };
Show( ListIDs );
SelectedIDs = {};
For( i = 1, i <= N Items (ListIDs), i++,
If(
Not( Is Missing( Regex( ListIDs[i], "_\d{4}" ) ) ),
Insert Into( SelectedIDs, i );
);
);
Print( SelectedIDs );Re: Errore JSL Argomenti insufficienti nella valutazione di 'Contiene'CIAO,
Ho deciso di modificare lo script e utilizzare la funzione Regex Match.Questo mi ha avvicinato al mio obiettivo.Questo restituisce la posizione nell'elenco dei nomi di file previsti.Come posso ottenere i "Nomi" non le loro posizioni.
ListIDs = {"2019-11", "2020-06", "file1_2020", "file2_2020"};
SelectedIDs = {};
For (i = 1, i <= N Items (ListIDs), i++,
If ((Regex Match (Char(ListIDs[i]), "_\d{4}") !={}),
Insert Into (SelectedIDs, i);
);
);
N Items (SelectedIDs);
Print(SelectedIDs);Re: Errore JSL Argomenti insufficienti nella valutazione di 'Contiene'Ciao Mark,
Il secondo argomento è il "delimitatore"? Avrei pensato che sarebbe stato "," non "2020".L'obiettivo della Regex è selezionare solo i file che hanno "_2020" o in futuro "_2021", "_2021" ecc. Scusa se non mi spiego.
Re: Errore JSL Argomenti insufficienti nella valutazione di 'Contiene'È necessario il secondo argomento per la funzione Contains() per designare la stringa di destinazione. Come questo:
Show (ListIDs);ListIDs = {"2020-06","practice", "file1_2020", "file2_2020"}SelectedIDs = {};
For (i = 1, i <= N Items (ListIDs), i++,
If (Contains(Regex(Char(ListIDs[i]), "_\d{4}"), "2020"),
Insert Into (SelectedIDs, i);
);
);
N Items (SelectedIDs);
Print(SelectedIDs);