procedure cat: concatenate strings procedure charcnt: character count procedure collate: string collation procedure comb: character combinations procedure compress: character compression procedure coprefix: find common prefix of strings procedure cosuffix: find common suffix of strings procedure csort: lexically ordered characters procedure decollate: string decollation procedure deletec: delete characters procedure deletes: delete string procedure diffcnt: number of different characters procedure extend: extend string procedure fchars: characters in order of frequency procedure interleave: interleave strings procedure ispal: test for palindrome procedure maxlen: maximum string length procedure meander: meandering strings procedure multicoll: collate strings in list procedure ochars: first appearance unique characters procedure odd_even: odd-even numerical string procedure palins: palindromes procedure permutes: generate string permutations procedure pretrim: pre-trim string procedure reflect: string reflection procedure replace: string replacement procedure replacem: multiple string replacement procedure replc: replicate characters procedure rotate: string rotation procedure schars: lexical unique characters procedure scramble: scramble string procedure selectp: select characters procedure slugs: generate s in chunks of size <= n procedure starseq: closure sequence procedure strcnt: substring count procedure substrings: generate substrings procedure transpose: transpose characters procedure words: generate words from string
link strings
May 8, 2002; Ralph E. Griswold
This file is in the public domain.
These procedures perform operations on strings.
cat(s1, s2, ...) concatenates an arbitrary number of strings.
charcnt(s, c) returns the number of instances of characters in
c in s.
collate(s1, s2) collates the characters of s1 and s2. For example,
collate("abc", "def")
produces "adbecf".
comb(s, i) generates the combinations of characters from s
taken i at a time.
compress(s, c) compresses consecutive occurrences of charac-
ters in c that occur in s; c defaults to &cset.
coprefix(s1, s2, ...)
produces the common prefix of its arguments:
the longest initial substring shared by all,
which may be the empty string.
cosuffix(s1, s2, ...)
produces the common suffix of its arguments:
the longest trailing substring shared by all,
which may be the empty string.
csort(s) produces the characters of s in lexical order.
decollate(s, i) produces a string consisting of every other
character of s. If i is odd, the odd-numbered
characters are selected, while if i is even,
the even-numbered characters are selected.
The default value of i is 1.
deletec(s, c) deletes occurrences of characters in c from s.
deletep(s, L) deletes all characters at positions specified in
L.
deletes(s1, s2) deletes occurrences of s2 in s1.
diffcnt(s) returns count of the number of different
characters in s.
extend(s, n) replicates s to length n.
fchars(s) returns characters of s in order of decreasing
frequency
interleave(s1, s2) interleaves characters s2 extended to the length
of s1 with s1.
ispal(s) succeeds and returns s if s is a palindrome
maxlen(L, p) returns the length of the longest string in L.
If p is given, it is applied to each string as
as a "length" procedure. The default for p is
proc("*", 1).
meander(s, n) produces a "meandering" string that contains all
n-tuples of characters of s.
multicoll(L) returns the collation of the strings in L.
ochars(s) produces the unique characters of s in the order
that they first appear in s.
odd_even(s) inserts values in a numerical string so that
adjacent digits follow an odd-even pattern.
palins(s, n) generates all the n-character palindromes from the
characters in s.
permutes(s) generates all the permutations of the string s.
pretrim(s, c) trims characters from beginning of s.
reflect(s1, i, s2)
returns s1 concatenated s2 and the reversal of s1
to produce a palindroid; the values of i
determine "end conditions" for the reversal:
0 pattern palindrome; the default
1 pattern palindrome with center duplicated
2 true palindrome with center not duplicated
3 true palindrome with center duplicated
s2 defaults to the empty string, in which case the
result is a full palindrome
replace(s1, s2, s3)
replaces all occurrences of s2 in s1 by s3; fails
if s2 is null.
replacem(s, ...) performs multiple replacements in the style of
of replace(), where multiple argument pairs
may be given, as in
replacem(s, "a", "bc", "d", "cd")
which replaced all "a"s by "bc"s and all
"d"s by "cd"s. Replacements are performed
one after another, not in parallel.
replc(s, L) replicates each character of c by the amount
given by the values in L.
rotate(s, i) rotates s i characters to the left (negative i
produces rotation to the right); the default
value of i is 1.
schars(s) produces the unique characters of s in lexical
order.
scramble(s) scrambles (shuffles) the characters of s randomly.
selectp(s, L) selects characters of s that are at positions
given in L.
slugs(s, n, c) generates column-sized chunks (length <= n)
of string s broken at spans of cset c.
Defaults: n 80
c ' \t\r\n\v\f'
Example: every write("> ", slugs(msg, 50))
starseq(s) sequence consisting of the closure of s
starting with the empty string and continuing
in lexical order as given in s
strcnt(s1, s2) produces a count of the number of non-overlapping
times s1 occurs in s2; fails is s1 is null
substrings(s, i, j)
generates all the substrings of s with lengths
from i to j, inclusive; i defaults to 1, j
to *s
transpose(s1, s2, s3)
transposes s1 according to label s2 and
transposition s3.
words(s, c) generates the "words" from the string s that
are separated by characters from the cset
c, which defaults to ' \t\r\n\v\f'.