mapstr.icn: Procedure for map() for strings

link mapstr
March 3, 1996; Richard L. Goerwitz
This file is in the public domain.

Mapstrs(s, l1, l2) works like map(), except that instead of taking
ordered character sequences (strings) as arguments 2 and 3, it
takes ordered string sequences (lists).

Suppose, for example, you wanted to bowdlerize a string by
replacing the words "hell" and "shit" with "heck" and "shoot."  You
would call mapstrs as follows:

    mapstrs(s, ["hell", "shit"], ["heck", "shoot"])

In order to achieve reasonable speed, mapstrs creates a lot of
static structures, and uses some extra storage.  If you want to
replace one string with another, it is overkill.  Just use the IPL
replace() routine (in strings.icn).

If l2 is longer than l1, extra members in l2 are ignored.  If l1 is
longer, however, strings in l1 that have no correspondent in l2 are
simply deleted.  Mapstr uses a longest-possible-match approach, so
that replacing ["hellish", "hell"] with ["heckish", "heck"] will
work as one would expect.

Source code | Program Library Page | Icon Home Page