在 kdb 中将字符串转换为 long
Cast string to long in kdb
我想先将一个字符串分解为字符串列表,然后根据条件我想 return 列表中的一个项目一样长。
Func:{[x]
Temp:vs "-" x;
if["AAA" ~ Temp[0];:"J"$Temp[1];:"J"$Temp[2]]
}
Func["AAA-809-AXSDF"]
此函数 returns 809 但当我这样做时:
809 ~ Func["AAA-809-AXSDF"]
它returns 0b
这意味着它不会将列表项转换为长列表项。请推荐
如果我的逻辑正确,下面的代码可以解决问题:
{x: "-"vs x; "J"$ $["AAA"~x 0;x 1; x 2]}"AAA-809-AXSDF"
您的代码中存在一些错误:
1: [x]
没有必要
2: vs "-" x
应该是 "-" vs x
3:if["AAA" ~ Temp[0];:"J"$Temp[1];:"J"$Temp[2]]
这条语句if true always returns :"J"$Temp[1]
,:"J"$Temp[2]
永远不会执行。我想你需要的是条件 $
operator
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
我想先将一个字符串分解为字符串列表,然后根据条件我想 return 列表中的一个项目一样长。
Func:{[x]
Temp:vs "-" x;
if["AAA" ~ Temp[0];:"J"$Temp[1];:"J"$Temp[2]]
}
Func["AAA-809-AXSDF"]
此函数 returns 809 但当我这样做时:
809 ~ Func["AAA-809-AXSDF"]
它returns 0b
这意味着它不会将列表项转换为长列表项。请推荐
如果我的逻辑正确,下面的代码可以解决问题:
{x: "-"vs x; "J"$ $["AAA"~x 0;x 1; x 2]}"AAA-809-AXSDF"
您的代码中存在一些错误:
1: [x]
没有必要
2: vs "-" x
应该是 "-" vs x
3:if["AAA" ~ Temp[0];:"J"$Temp[1];:"J"$Temp[2]]
这条语句if true always returns :"J"$Temp[1]
,:"J"$Temp[2]
永远不会执行。我想你需要的是条件 $
operator
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