3

我对 kdb+q 很陌生。我遇到了从字符串中提取数字的问题。

有什么建议么?

例子:

"AZXER_1234_MARKET" should output 1234 //Assume that there is only one number in the 

细绳

4

3 回答 3

6

提取数字然后转换为所需的类型。

q){"I"$x inter .Q.n} "AZXER_1234_MARKET"
1234i

q){"I"$x inter .Q.n} "AZXER_123411_MARKET"
123411i
q){"I"$x inter .Q.n} "AZXER_1234_56_MARKET"
123456i
q){"I"$x inter .Q.n} "AR_34_56_MAT"
3456i
于 2014-06-17T15:05:09.230 回答
2

如果您有多个数字,这是上面的变体,它允许在一个字符串中包含多个数字

q)nums:{"I"$((where n&differ  n:x in .Q.n) cut x) inter\: .Q.n}
q)nums "this is 123 and this is 56"
123 56i
于 2014-06-18T02:59:21.397 回答
1

如果我们假设字符串中只有一个数字,我可以建议以下内容:

q)"AZXER_1234_MARKET"inter .Q.n
"1234"
q)"A_5643_B"inter .Q.n
"5643"

然后,您当然可以将其转换为您想要的任何类型。

于 2014-06-17T15:08:00.337 回答