在Dyalog APL中实现掩码向量与数据向量的合并需求
Dyalog APL 简洁实现方案
直接利用APL的向量式赋值特性,就能高效完成需求,无需复杂的矩阵或旋转操作:
a ← 'X--Y-Z' '--34--91' '-+-+' ⍝ 掩码向量 b ← 'abcdef' 'hijklmno' 'stuv' ⍝ 数据向量 c ← {temp ← ⍺ ⋄ temp[⍵≠'-'] ← ⍵[⍵≠'-'] ⋄ temp}¨b,a
代码解释
{...}¨b,a:对数据向量b和掩码向量a的每一对字符串执行内部函数temp ← ⍺:复制当前数据字符串作为临时变量temp[⍵≠'-'] ← ⍵[⍵≠'-']:生成掩码字符串的布尔索引(非-的位置为真),将临时变量对应位置替换为掩码的字符temp:返回修改后的字符串
执行后得到的结果向量c与示例完全一致:'XbcYeZ' 'hi34lm91' 's+u+'
该方案的优势:
- 纯向量式操作,简洁高效
- 自动适配不同长度的字符串
- 未使用正则或内置替换函数,完全符合需求
内容的提问来源于stack exchange,提问作者Jay Mosk
相关产品推荐
相关产品推荐

