Caseless compares and hashes strings ignoring case, so that for example
Caseless.equal "OCaml" "ocaml" and Caseless.("apple" < "Banana") are true, and
Caseless.Map, Caseless.Table lookup and Caseless.Set membership is
case-insensitive.
String append. Also available unqualified, but re-exported here for documentation purposes.
Note that a ^ b must copy both a and b into a newly-allocated result string, so
a ^ b ^ c ^ ... ^ z is quadratic in the number of strings. String.concat does not
have this problem -- it allocates the result buffer only once. The Rope module
provides a data structure which uses a similar trick to achieve fast concatenation at
either end of a string.
Substring search and replace convenience functions. They call Search_pattern.create
and then forget the preprocessed pattern when the search is complete. pos < 0 or
pos >= length t result in no match (hence substr_index returns None and
substr_index_exn raises). may_overlap indicates whether to report overlapping
matches, see Search_pattern.index_all.
Returns the reversed list of characters contained in a list.
nget s i Gets the char at normalized position i in s.
nset s i c Sets the char at normalized position i to c.
lfindi ?pos t ~f returns the smallest i >= pos such that f i t.[i], if there is
such an i. By default, pos = 0.
rfindi ?pos t ~f returns the largest i <= pos such that f i t.[i], if there is
such an i. By default pos = length t - 1.
Warning: the following strip functions have copy-on-write semantics (i.e. they may return the same string passed in)
foldi works similarly to fold, but also pass in index of each character to f
tr_inplace target replacement s destructively modifies s (in place!)
replacing every instance of target in s with replacement.
slightly faster hash function on strings
is_empty s returns true iff s is empty (i.e. its length is 0).
gen' ?length char_gen generates strings using the given distributions for string
length and each character.