kdb:检查符号是否以特定前缀开头
kdb: check whether a symbol starts with a particular prefix
给定一个符号,如何检查它是否有特定的前缀?
我有以下代码。它检查符号是否以 aaaaa
开头,但 returns 1b
是否以 aaa
开头,这是错误的。我可以添加一个长度检查,但这看起来很冗长。有更清洁的方法吗?
{"aaaaa"~-5#string x}[`$"aaa"]
你可以使用 like
吗?
q)`aaa like "aaa*"
1b
q)`aaa like "aaaaa*"
0b
似乎问题出在“take”上,因为“aaa”比 5 短。为了满足该长度,它会将“aaa”本身延长 2/3。
您可以修改您的函数,使您拥有以下内容:
q){"aaaaa"~(x) til 5}["aaa"]
0b
q){"aaaaa"~(x) til 5}["aaaaaaaa"]
1b
扩展 Matthew 的答案,如果你想从中创建一个函数,请执行以下操作:
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
如果您发现任何问题,请告诉我。
给定一个符号,如何检查它是否有特定的前缀?
我有以下代码。它检查符号是否以 aaaaa
开头,但 returns 1b
是否以 aaa
开头,这是错误的。我可以添加一个长度检查,但这看起来很冗长。有更清洁的方法吗?
{"aaaaa"~-5#string x}[`$"aaa"]
你可以使用 like
吗?
q)`aaa like "aaa*"
1b
q)`aaa like "aaaaa*"
0b
似乎问题出在“take”上,因为“aaa”比 5 短。为了满足该长度,它会将“aaa”本身延长 2/3。
您可以修改您的函数,使您拥有以下内容:
q){"aaaaa"~(x) til 5}["aaa"]
0b
q){"aaaaa"~(x) til 5}["aaaaaaaa"]
1b
扩展 Matthew 的答案,如果你想从中创建一个函数,请执行以下操作:
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
如果您发现任何问题,请告诉我。