我在APL中编写了一个dfn来删除前导,尾随和多个空格。有没有其他方法可以进一步改善它?
{a←(⍵∊' ') ⋄ b←((¯1↓(a,0)×(1,a))+(⌽∧\(⌽⍵)=' '))=0 ⋄ b/⍵} ' sad as asdasd asd '
o/p sad as asdasd asd
答案 0 :(得分:1)
这是一个小的重写,只是为了删除parantheses并使用布尔运算符:
{a←⍵=' ' ⋄ b←~(¯1↓(a,0)∧(1,a))∨(⌽∧\⌽a) ⋄ b/⍵}
作为副作用,它也快16%; - )
我还建议)load dfns
和)ed dxb
向fn学习更快速的内容,以及矩阵,嵌套数据等。
答案 1 :(得分:1)
删除前导空格:
{(+/×\' '=⍵)↓⍵}
您可以通过反转字符串从右侧删除并运行相同的代码。
删除多个空格:
{(~' '⍷⍵)/⍵}
答案 2 :(得分:0)
删除前导,尾随和多个空格
{(' '=1↑∆)↓(-' '=¯1↑∆)↓∆←(∼' '⍷⍵)/⍵}
这种方式效率更高。