JSL-Fehler Nicht genügend Argumente bei der Auswertung von „Contains“Ich habe eine Liste mit "Dateinamen" und möchte eine Unterliste nur derjenigen erstellen, deren Namen "_2020" enthalten/enden. Ich verwende eine Regex, um diese Dateien auszuwählen: "_\d{4}".Ich erhalte jedoch die Fehlermeldung "Nicht genügend Argumente".
Wenn ich die ListIDs teste, bekomme ich die erwartete Liste von Dateinamen, sie ist nicht leer. Ich freue mich über jeden Hinweis, wie ich mein Skript reparieren kann.
Der Protokollfehler lautet: nicht genügend Argumente beim Zugriff oder Auswertung von '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);SkripterstellungBetreff: JSL-Fehler Nicht genügend Argumente bei der Auswertung von „Contains“Hallo Mark,
Vielen Dank, ich liebe Ihre Lösung.Ich bin immer erstaunt, wenn die Lösung ein negativer Ausdruck ist.
wie " Not( Fehlt (Regex( ListIDs[i], "_\d{4}" ) ) ".
Betreff: JSL-Fehler Nicht genügend Argumente bei der Auswertung von „Contains“ListIDs[SelectedIDs];
Betreff: JSL-Fehler Nicht genügend Argumente bei der Auswertung von „Contains“Ich denke, dass Sie den Test vereinfachen können. Sie brauchen Contains() nicht und seine Verwendung ist problematisch, wenn sein erstes Argument ein fehlender Wert ist. Diese Modifikation verwendet das Ergebnis der Regex()-Funktion direkt. (Ich habe das Skript neu formatiert, um seine Struktur besser sichtbar zu machen.)
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 );Betreff: JSL-Fehler Nicht genügend Argumente bei der Auswertung von „Contains“Hallo,
Ich habe mich entschieden, das Skript zu ändern und die Funktion Regex Match zu verwenden.Dieser hat mich meinem Ziel näher gebracht.Dieser gibt die Position auf der Liste der erwarteten Dateinamen zurück.Wie bekomme ich die "Namen" nicht ihre Positionen.
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);Betreff: JSL-Fehler Nicht genügend Argumente bei der Auswertung von „Contains“Hallo Mark,
Ist das zweite Argument das "Trennzeichen"? Ich hätte gedacht, es wäre „,“ und nicht „2020“.Das Ziel der Regex ist es, nur Dateien auszuwählen, die "_2020" oder in Zukunft "_2021", "_2021" usw. enthalten. Entschuldigung, wenn ich mich nicht erkläre.
Betreff: JSL-Fehler Nicht genügend Argumente bei der Auswertung von „Contains“Sie benötigen das zweite Argument für die Contains()-Funktion, um die Zielzeichenfolge festzulegen. So was:
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);