在列表中查找值如果我有一个清单:
列表 = {亨利(1,2), 罗伯特(3,4), 约翰(.,6), 凯(13,.)};
但不同表的名称位置总是不同的,
列表 = {亨利(1,2), 罗伯特(3,4), 凯(13, . ), 约翰( . ,6) };
有时某些名字也会丢失。
列表 = {亨利(1,2), 罗伯特(3,4) };
我知道我们可以使用 Contains(List, List[1]) 但这样,我们会考虑列表中值的位置。 我想知道有什么方法可以搜索像“Henry”这样的字符串并提取 Henry 的 (1,2) ,并将 1 保存为一个变量,将 2 保存为另一个变量。 谢谢
回复:在列表中查找值嘿,谢谢你,我使用正则表达式让它工作。@vince_faller
回复:在列表中查找值这应该做你想做的。
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);回复:在列表中查找值你好@Aam_jmp ,
跟进@uday_guntupalli建议使用正则表达式,这里有一个使用 Contains() 的简单脚本,其工作原理类似并将值存储在 var1 和 var2 中。变量“found”用于在找到名称时提前退出循环,或者在将 var1 和 var2 设置为缺失时打印一条消息,表明在列表中未找到搜索字符串。
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 = .;
)
);回复:在列表中查找值@Aam_jmp ,
您可以使用正则表达式来查找所需的字符串。 您的搜索词需要构建为涵盖您想要查找的尽可能广泛的范围,并且正则表达式的强大功能可以通过您构建搜索词的程度来释放。
下面的示例仅涵盖对术语“Henry”的搜索
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);
);
);