如何在KDB+表格中同时使用SSR替换多个字符串?
KDB+ 多字符字符串替换解决方案
你当前的写法无法同时替换多个符号,因为ssr的第二个参数仅接受单个匹配模式,"-"|","只会返回其中一个符号,而非同时匹配两者。以下是几种可行的解决方法:
方法1:嵌套调用ssr
依次替换每个目标符号,适合少量符号的场景:
tab:([]a:`a`b`c;b:("abc-d";"rdf,e";"ertfg")) update b:{ssr[ssr[x;"-";" "];",";" "]} each b from tab
方法2:遍历替换符号列表
如果需要替换的符号较多,可以将它们存入列表,循环处理:
tab:([]a:`a`b`c;b:("abc-d";"rdf,e";"ertfg")) replaceChars:("-";",") update b:{raze ssr[x;y;" "] each replaceChars} each b from tab
方法3:使用正则字符集(推荐)
KDB+支持正则表达式,用[-,]作为字符集匹配多个符号,一次完成替换,效率更高:
tab:([]a:`a`b`c;b:("abc-d";"rdf,e";"ertfg")) update b:{ssr[x;"[-,]";" "]} each b from tab
执行上述任意方法后,表格tab的b列都会变为("abc d";"rdf e";"ertfg"),实现同时替换-和,的需求。
内容的提问来源于stack exchange,提问作者Terry
相关产品推荐
相关产品推荐

