我想首先将一个字符串分解为字符串的列表,并基于一个条件,我想返回列表中相同长度的项。
Func:{[x]
Temp:vs "-" x;
if["AAA" ~ Temp[0];:"J"$Temp[1];:"J"$Temp[2]]
}
Func["AAA-809-AXSDF"]
这个函数返回809,但是当我这样做时:
809 ~ Func["AAA-809-AXSDF"]
返回0b
这意味着它没有将list项转换为long。请建议
你的代码中有一些错误:
1:[x]
是不必要的
2:vs "-" x
应为"-" vs x
3:if["AAA" ~ Temp[0];:"J"$Temp[1];:"J"$Temp[2]]
this statement if truealways return:"J"$Temp[1]
,:"J"$Temp[2]
永远不会被执行。我认为你需要的是条件$
运算符
q)func:{"J"$ $["AAA"~first a:"-"vs x;a 1;a 2]}
q)809~func["AAA-809-AXSDF"]
1b
q)111~func["AAB-AXSDF-111"]
1b
如果我的逻辑正确,下面的代码解决了这个问题:
{x: "-"vs x; "J"$ $["AAA"~x 0;x 1; x 2]}"AAA-809-AXSDF"