删除APL中字符串中的前导,尾随和多个空格

时间:2014-06-25 18:38:11

标签: string apl

我在APL中编写了一个dfn来删除前导,尾随和多个空格。有没有其他方法可以进一步改善它?

{a←(⍵∊' ') ⋄ b←((¯1↓(a,0)×(1,a))+(⌽∧\(⌽⍵)=' '))=0 ⋄ b/⍵} '  sad as    asdasd asd    '

o/p sad as asdasd asd

3 个答案:

答案 0 :(得分:1)

这是一个小的重写,只是为了删除parantheses并使用布尔运算符:

{a←⍵=' ' ⋄ b←~(¯1↓(a,0)∧(1,a))∨(⌽∧\⌽a) ⋄ b/⍵}

作为副作用,它也快16%; - )

我还建议)load dfns)ed dxb向fn学习更快速的内容,以及矩阵,嵌套数据等。

答案 1 :(得分:1)

删除前导空格:

{(+/×\' '=⍵)↓⍵}

您可以通过反转字符串从右侧删除并运行相同的代码。

删除多个空格:

{(~'  '⍷⍵)/⍵}

答案 2 :(得分:0)

删除前导,尾随和多个空格

{(' '=1↑∆)↓(-' '=¯1↑∆)↓∆←(∼'  '⍷⍵)/⍵}

这种方式效率更高。