0

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

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

o/p sad as asdasd asd
4

3 回答 3

1

删除前导空格:

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

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

删除多个空格:

{(~'  '⍷⍵)/⍵}
于 2014-07-28T16:36:05.340 回答
1

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

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

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

我还建议)load dfns)ed dxb从那个 fn 中学习,它做同样的速度更快,也适用于矩阵、嵌套数据等。

于 2014-06-26T06:42:15.873 回答
0

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

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

这种方式效率更高。

于 2016-06-15T16:46:53.830 回答