Werte in einer Liste findenWenn ich eine Liste habe:
List = {Henry(1,2), Robert(3,4), John( . ,6), Kai(13, . ) };
Die Position der Namen ist jedoch für verschiedene Tabellen immer unterschiedlich.
List = {Henry(1,2), Robert(3,4), Kai(13, . ), John( . ,6) };
und manchmal fehlen auch bestimmte Namen.
Liste = {Henry(1,2), Robert(3,4) };
Ich weiß, dass wir „Contains(List, List[1])“ verwenden können, aber auf diese Weise berücksichtigen wir die Position von Werten in einer Liste. Ich möchte wissen, ob es eine Möglichkeit gibt, nach Zeichenfolgen wie „Henry“ zu suchen, (1,2) für Henry zu extrahieren und 1 als eine Variable und 2 als eine andere zu speichern. Danke
Betreff: Werte in einer Liste findenHey, danke, ich habe es allerdings mit Regex zum Laufen gebracht.@vince_faller
Betreff: Werte in einer Liste findenDies sollte tun, was Sie wollen.
Names Default to here(1);
Extract Expr({Henry(1,2), Robert(3,4), John( . ,6), Kai(13, . ) }, Henry(Wild(), Wild()));
//or for a more complete answer
l = {Henry(1,2), Robert(3,4), John( . ,6), Kai(13, . ) };
extracted = Eval(Substitute(
Expr(
Extract Expr(DV_LIST, Henry(WildList()));
),
Expr(DV_LIST), nameexpr(l)
));
first = Arg(extracted, 1);
second = Arg(extracted, 2);Betreff: Werte in einer Liste findenHallo @Aam_jmp ,
Folgend auf @uday_guntupalli Der Vorschlag von s, reguläre Ausdrücke zu verwenden, ist hier ein einfaches Skript mit Contains(), das ähnlich funktioniert und die Werte in var1 und var2 speichert.Die Variable „found“ wird verwendet, um die Schleife vorzeitig zu verlassen, wenn der Name gefunden wird, oder um eine Meldung auszugeben, dass die Suchzeichenfolge nicht in der Liste gefunden wurde, während var1 und var2 auf „missing“ gesetzt wurden.
search_str = "Henry";
found = 0;
for(i = 1, i <= N Items(MyList), i++,
temp = char(MyList[i]);
If(Contains(temp,search_str) > 0,
var1 = num(word(2,temp,"(),"));
var2 = num(word(3,temp,"(),"));
found = 1;
);
if(found, break());
if(i == N Items(MyList) & !found,
Print("Search term not found in the list.");
var1 = .;
var2 = .;
)
);Betreff: Werte in einer Liste finden@Aam_jmp ,
Sie können Regex verwenden, um die gewünschte Zeichenfolge zu finden. Ihr Suchbegriff muss so konstruiert sein, dass er einen möglichst großen Bereich abdeckt, den Sie suchen möchten. Die Leistungsfähigkeit regulärer Ausdrücke wird dadurch freigesetzt, wie gut Sie Ihren Suchbegriff konstruieren können.
Das folgende Beispiel deckt die Suche nur nach dem Begriff „Henry“ ab.
Clear Log(); Clear Globals();
MyList = List = {Henry(1,2), Robert(3,4), John( . ,6), Kai(13, . ) };
SelInd = {};
for(i = 1, i <= N Items(MyList), i++,
If(!IsMissing(Regex(Char(MyList[i]),"Henry")),
Insert Into(SelInd,i);
);
);