kdb:检查符号是否以特定前缀开头

kdb:检查符号是否以特定前缀开头,kdb,Kdb,给定一个符号,如何检查它是否有特定的前缀 我有下面的代码。它检查符号是否以AAAA开头,但返回1b表示aaa,这是错误的。我可以添加长度检查,但这似乎冗长。有没有更干净的方法 {"aaaaa"~-5#string x}[`$"aaa"] 你能用这个吗 你能用这个吗 似乎问题在于take,因为aaa小于5。为了达到这个长度,它将aaa扩展了2/3 您可以修改您的函数,以便实现以下功能: q){"aaaaa"~(x) til 5}[&qu

给定一个符号,如何检查它是否有特定的前缀

我有下面的代码。它检查符号是否以AAAA开头,但返回1b表示aaa,这是错误的。我可以添加长度检查,但这似乎冗长。有没有更干净的方法

{"aaaaa"~-5#string x}[`$"aaa"]
你能用这个吗

你能用这个吗


似乎问题在于take,因为aaa小于5。为了达到这个长度,它将aaa扩展了2/3

您可以修改您的函数,以便实现以下功能:

q){"aaaaa"~(x) til 5}["aaa"]
0b
q){"aaaaa"~(x) til 5}["aaaaaaaa"]
1b
q)f:{x like "aaaaa*"}
q)f[`aaa]
0b
q)f[`aaaaa]
1b
q)f[`aaaaabcde]
1b

似乎问题在于take,因为aaa小于5。为了达到这个长度,它将aaa扩展了2/3

您可以修改您的函数,以便实现以下功能:

q){"aaaaa"~(x) til 5}["aaa"]
0b
q){"aaaaa"~(x) til 5}["aaaaaaaa"]
1b
q)f:{x like "aaaaa*"}
q)f[`aaa]
0b
q)f[`aaaaa]
1b
q)f[`aaaaabcde]
1b

扩展Matthew的答案,如果您想从中生成函数,请执行以下操作:

q){"aaaaa"~(x) til 5}["aaa"]
0b
q){"aaaaa"~(x) til 5}["aaaaaaaa"]
1b
q)f:{x like "aaaaa*"}
q)f[`aaa]
0b
q)f[`aaaaa]
1b
q)f[`aaaaabcde]
1b
如果您想使其更具动态性,可以为匹配的前缀添加第二个变量

q)f2[`aaa;"aaa"]
1b
q)f2:{x like y,"*"}
q)f2[`aaa;"aaaaa"]
0b
q)f2[`aaa;"aaa"]
1b

如果您发现任何问题,请告诉我。

扩展Matthew的答案,如果您想从中生成函数,请执行以下操作:

q){"aaaaa"~(x) til 5}["aaa"]
0b
q){"aaaaa"~(x) til 5}["aaaaaaaa"]
1b
q)f:{x like "aaaaa*"}
q)f[`aaa]
0b
q)f[`aaaaa]
1b
q)f[`aaaaabcde]
1b
如果您想使其更具动态性,可以为匹配的前缀添加第二个变量

q)f2[`aaa;"aaa"]
1b
q)f2:{x like y,"*"}
q)f2[`aaa;"aaaaa"]
0b
q)f2[`aaa;"aaa"]
1b
如果您发现任何问题,请告诉我。

下面的解决方案与类似的解决方案在这种情况下是更好的解决方案,但为了将来的参考,子列表与该示例中的max 3类似,但将采用该示例中的max 3。下面带有like的解决方案在这种情况下是更好的解决方案,但为了将来的参考,子列表与类似,但在该示例中将采用例如max 3。