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.