在kdb中将字符串转换为long



我想首先将一个字符串分解为字符串的列表,并基于一个条件,我想返回列表中相同长度的项。

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"

最新更新