从字符数组中提取数字

时间:2016-08-08 15:09:40

标签: kdb q-lang

如何从由字符串组成的特定列中提取数字 例如:

(`category:"abc 124M def 154M" ; "hij 120M hij 174M" ; "stu 126M def 166M" ; "abx 67M def 66M" )

答案:

124,154 
120,174
126,166
67,66

3 个答案:

答案 0 :(得分:3)

可能会有更高效的答案,但这有效:

q)f:{except[;0Nj]"J"$" "vs?[x in "0123456789";x;" "]}
q)category
"abc 124M def 154M"
"hij 120M hij 174M"
"stu 126M def 166M"
"abx 67M def 66M"
q)f each category
124 154
120 174
126 166
67  66

答案 1 :(得分:0)

参见'inter'

q)myStrings:("he11o";"I am a p3rs0n")
q)myStrings inter\:.Q.n
"11"
"30"
q)

答案 2 :(得分:0)

对于您的示例,修复语法可以为我们提供表格:

show tab:([]category:("abc 124M def 154M" ; "hij 120M hij 174M" ; "stu 126M def 166M" ; "abx 67M def 66M"))
category
-------------------
"abc 124M def 154M"
"hij 120M hij 174M"
"stu 126M def 166M"
"abx 67M def 66M"

从这里我们只能包含带有inter的数字字符和空格,拆分空格并转换以获取数字,不包括空值。

q){r@'where each not null r:"J"$" "vs/:x inter\:.Q.n," "}tab`category
124 154
120 174
126 166
67  66