在列表中查找值如果我有一個清單:
列表 = {亨利(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);
);
);