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.