─────────────
Blank Removal       rslt ← {blank} d?b argt         ⍝  Remove blanks.
─────────────
Each  of these functions, provided by Veli-Matti Jantunen, removes "blanks" from
its argument "character" array. The functions are general in the sense that they
accommodate  arrays  of any shape or depth. The optional left argument (default:
' '),  is a simple array of items to be removed from the argument array, accord-
ing to the semantics of the particular removal function.

dlb - drop leading blanks.
dtb - drop trailing blanks.
deb - drop ending blanks (both leading and trailing).
dmb - drop multiple blanks (multiple blanks replaced by a single one).
dxb - drop extraneous blanks (leading, trailing and multiple).
dab - drop all blanks.

Technical notes:

All of these functions follow the same architecture:

- Nested arrays are handled recursively.

- Matrices are handled column-wise (eg. dlb drops leading blank columns).

- Arrays  of higher rank are treated the same way (they are temporarily reshaped
  as matrices)

- Vectors are treated character-wise (sort of one-row matrices).

- Default  special  character  is blank, but the functions can be used for other
  characters  or  character  sets,  too  - sometimes this can lead to unexpected
  results).

- The core idiom(s) can easily be changed if more efficient ones are found.

Examples:

      show←' ·'∘subs                ⍝ show '·'s for blanks.

      show cvec                     ⍝ character vector.
··twas··ever··thus··

      show dlb cvec                 ⍝ drop leading blanks.
twas··ever··thus··

      show dtb cvec                 ⍝ drop trailing blanks.
··twas··ever··thus

      show deb cvec                 ⍝ drop ending blanks.
twas··ever··thus

      show dmb cvec                 ⍝ drop multiple blanks.
·twas·ever·thus·

      show dxb cvec                 ⍝ drop extraneous blanks.
twas·ever·thus

      show dab cvec                 ⍝ drop all blanks.
twaseverthus

      show cmat                     ⍝ character matrix.
··twas··ever··thus··
··heart·with··clay··

      show dlb cmat                 ⍝ drop leading blank columns.
twas··ever··thus··
heart·with··clay··

      show deb cmat                 ⍝ drop ending blank columns.
twas··ever··thus
heart·with··clay

      show dxb cmat                 ⍝ drop extraneous blank columns.
twas··ever·thus
heart·with·clay

      show¨ dxb↓cmat                ⍝ drop extraneous blanks in depth 2 array.
 twas·ever·thus  heart·with·clay

      show ↑dxb↓cmat                ⍝ drop extraneous blanks from each row.
twas·ever·thus·
heart·with·clay

      's'dmb'Mississippi'           ⍝ drop multiple 's's.
Misisippi

      'sp'dmb'Mississippi'          ⍝ ... and 'p's.
Misisipi

      'is'dxb'Mississippi'          ⍝ drop extra 'i's and 's's.
Mipp

      1 dmb 8 1 1 1 2 5             ⍝ drop multiple 1s.
8 1 2 5

See also: dab deb dlb dmb dtb dxb

Back to: contents

Back to: Workspaces