Up — package containers Basic String Utils Consider using Containers_string.KMP for pattern search, or Regex
libraries.
type 'a gen
= unit ‑> 'a option
type 'a sequence
= ('a ‑> unit) ‑> unit
type 'a klist
= unit ‑> [ `Nil | `Cons of 'a * 'a klist ]
Common Signature module type S : sig ... end
Strings
include module type of sig ... end
external length : string ‑> int = "%string_length"
external get : string ‑> int ‑> char = "%string_safe_get"
external set : bytes ‑> int ‑> char ‑> unit = "%string_safe_set"
Deprecated Use Bytes.set instead.external create : int ‑> bytes = "caml_create_string"
Deprecated Use Bytes.create instead.val make : int ‑> char ‑> string
val init : int ‑> (int ‑> char) ‑> string
val copy : string ‑> string
val sub : string ‑> int ‑> int ‑> string
val fill : bytes ‑> int ‑> int ‑> char ‑> unit
Deprecated Use Bytes.fill instead.val blit : string ‑> int ‑> bytes ‑> int ‑> int ‑> unit
val concat : string ‑> string list ‑> string
val iter : (char ‑> unit) ‑> string ‑> unit
val iteri : (int ‑> char ‑> unit) ‑> string ‑> unit
val map : (char ‑> char) ‑> string ‑> string
val mapi : (int ‑> char ‑> char) ‑> string ‑> string
val trim : string ‑> string
val escaped : string ‑> string
val index : string ‑> char ‑> int
val index_opt : string ‑> char ‑> int option
val rindex : string ‑> char ‑> int
val rindex_opt : string ‑> char ‑> int option
val index_from : string ‑> int ‑> char ‑> int
val index_from_opt : string ‑> int ‑> char ‑> int option
val rindex_from : string ‑> int ‑> char ‑> int
val rindex_from_opt : string ‑> int ‑> char ‑> int option
val contains : string ‑> char ‑> bool
val contains_from : string ‑> int ‑> char ‑> bool
val rcontains_from : string ‑> int ‑> char ‑> bool
val uppercase : string ‑> string
Deprecated Use String.uppercase_ascii instead.val lowercase : string ‑> string
Deprecated Use String.lowercase_ascii instead.val capitalize : string ‑> string
Deprecated Use String.capitalize_ascii instead.val uncapitalize : string ‑> string
Deprecated Use String.uncapitalize_ascii instead.val uppercase_ascii : string ‑> string
val lowercase_ascii : string ‑> string
val capitalize_ascii : string ‑> string
val uncapitalize_ascii : string ‑> string
val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val split_on_char : char ‑> string ‑> string list
external unsafe_get : string ‑> int ‑> char = "%string_unsafe_get"
external unsafe_set : bytes ‑> int ‑> char ‑> unit = "%string_unsafe_set"
external unsafe_blit : string ‑> int ‑> bytes ‑> int ‑> int ‑> unit = "caml_blit_string"
external unsafe_fill : bytes ‑> int ‑> int ‑> char ‑> unit = "caml_fill_string"
val equal : string ‑> string ‑> bool
Equality function on strings.
val compare : string ‑> string ‑> int
val is_empty : string ‑> bool
is_empty s
returns true
iff s
is empty (i.e. its length is 0).
val init : int ‑> (int ‑> char) ‑> string
val rev : string ‑> string
rev s
returns the reverse of s
.
val pad : ?side:[ `Left | `Right ] ‑> ?c:char ‑> int ‑> string ‑> string
pad n str
ensures that str
is at least n
bytes long,
and pads it on the side
with c
if it's not the case.
Parameter side : determines where padding occurs (default: `Left
).Parameter c : the char used to pad (default: ' ').Since : 0.17val of_char : char ‑> string
val of_gen : char gen ‑> string
Convert a gen
of characters to a string.
Convert a sequence
of characters to a string.
val of_klist : char klist ‑> string
Convert a klist
of characters to a string.
val of_list : char list ‑> string
Convert a list of characters to a string.
val of_array : char array ‑> string
Convert an array of characters to a string.
val to_array : string ‑> char array
Return the array of characters contained in the string.
val find : ?start:int ‑> sub:string ‑> string ‑> int
Find sub
in string, returns its first index or -1
.
val find_all : ?start:int ‑> sub:string ‑> string ‑> int gen
find_all ~sub s
finds all occurrences of sub
in s
, even overlapping
instances.
Parameter start : starting position in s
.Since : 0.17val find_all_l : ?start:int ‑> sub:string ‑> string ‑> int list
find_all_l ~sub s
finds all occurrences of sub
in s
and returns
them in a list.
Parameter start : starting position in s
.Since : 0.17val mem : ?start:int ‑> sub:string ‑> string ‑> bool
mem ~sub s
is true
iff sub
is a substring of s
.
val rfind : sub:string ‑> string ‑> int
Find sub
in string from the right, returns its first index or -1
.
Should only be used with very small sub
.
val replace : ?which:[ `Left | `Right | `All ] ‑> sub:string ‑> by:string ‑> string ‑> string
replace ~sub ~by s
replaces some occurrences of sub
by by
in s
.
val is_sub : sub:string ‑> int ‑> string ‑> int ‑> len:int ‑> bool
is_sub ~sub i s j ~len
returns true
iff the substring of
sub
starting at position i
and of length len
is a substring
of s
starting at position j
.
val repeat : string ‑> int ‑> string
The same string, repeated n times.
val prefix : pre:string ‑> string ‑> bool
prefix ~pre s
returns true
iff pre
is a prefix of s
.
val suffix : suf:string ‑> string ‑> bool
suffix ~suf s
returns true
iff suf
is a suffix of s
.
val chop_prefix : pre:string ‑> string ‑> string option
chop_prefix ~pre s
removes pre
from s
if pre
really is a prefix
of s
, returns None
otherwise.
val chop_suffix : suf:string ‑> string ‑> string option
chop_suffix ~suf s
removes suf
from s
if suf
really is a suffix
of s
, returns None
otherwise.
val take : int ‑> string ‑> string
take n s
keeps only the n
first chars of s
.
val drop : int ‑> string ‑> string
drop n s
removes the n
first chars of s
.
val take_drop : int ‑> string ‑> string * string
take_drop n s = take n s, drop n s
.
val lines : string ‑> string list
lines s
returns a list of the lines of s
(splits along '\n').
val lines_gen : string ‑> string gen
lines_gen s
returns a generator of the lines of s
(splits along '\n').
val concat_gen : sep:string ‑> string gen ‑> string
concat_gen ~sep g
concatenates all strings of g
, separated with sep
.
val unlines : string list ‑> string
unlines l
concatenates all strings of l
, separated with '\n'.
val unlines_gen : string gen ‑> string
unlines_gen g
concatenates all strings of g
, separated with '\n'.
val set : string ‑> int ‑> char ‑> string
set s i c
creates a new string which is a copy of s
, except
for index i
, which becomes c
.
Raises Invalid_argument : if i
is an invalid index.Since : 0.12val iter : (char ‑> unit) ‑> string ‑> unit
val iteri : (int ‑> char ‑> unit) ‑> string ‑> unit
Iter on chars with their index.
val map : (char ‑> char) ‑> string ‑> string
val mapi : (int ‑> char ‑> char) ‑> string ‑> string
Map chars with their index.
val filter_map : (char ‑> char option) ‑> string ‑> string
filter_map f s
calls (f a0) (f a1) ... (f an)
where a0 ... an
are the characters of s.
It returns the string of characters ci
such as f ai = Some ci
(when f
returns None
,
the corresponding element of s
is discarded).
val filter : (char ‑> bool) ‑> string ‑> string
filter f s
discards characters not satisfying f
.
val flat_map : ?sep:string ‑> (char ‑> string) ‑> string ‑> string
Map each chars to a string, then concatenates them all.
Parameter sep : optional separator between each generated string.Since : 0.12val for_all : (char ‑> bool) ‑> string ‑> bool
val exists : (char ‑> bool) ‑> string ‑> bool
include S with type S .t := string
Return the length (number of characters) of the given string.
val blit : t ‑> int ‑> Bytes.t ‑> int ‑> int ‑> unit
Like String.blit .
Compatible with the -safe-string
option.
Raises Invalid_argument : if indices are not valid.val fold : ('a ‑> char ‑> 'a ) ‑> 'a ‑> t ‑> 'a
Fold on chars by increasing index.
Conversions val to_gen : t ‑> char gen
Return the gen
of characters contained in the string.
Return the sequence
of characters contained in the string.
val to_klist : t ‑> char klist
Return the klist
of characters contained in the string.
val to_list : t ‑> char list
Return the list of characters contained in the string.
val pp_buf : Buffer.t ‑> t ‑> unit
Renamed from pp
since 2.0.
val pp : Format.formatter ‑> t ‑> unit
Print the string within quotes.
Renamed from print
since 2.0.
Trim space on the left (see String.trim for more details).
Trim space on the right (see String.trim for more details).
Operations on 2 strings val map2 : (char ‑> char ‑> char) ‑> string ‑> string ‑> string
Map pairs of chars.
Raises Invalid_argument : if the strings have not the same length.Since : 0.12val iter2 : (char ‑> char ‑> unit) ‑> string ‑> string ‑> unit
Iterate on pairs of chars.
Raises Invalid_argument : if the strings have not the same length.Since : 0.12val iteri2 : (int ‑> char ‑> char ‑> unit) ‑> string ‑> string ‑> unit
Iterate on pairs of chars with their index.
Raises Invalid_argument : if the strings have not the same length.Since : 0.12val fold2 : ('a ‑> char ‑> char ‑> 'a ) ‑> 'a ‑> string ‑> string ‑> 'a
Fold on pairs of chars.
Raises Invalid_argument : if the strings have not the same length.Since : 0.12val for_all2 : (char ‑> char ‑> bool) ‑> string ‑> string ‑> bool
All pairs of chars respect the predicate?
Raises Invalid_argument : if the strings have not the same length.Since : 0.12val exists2 : (char ‑> char ‑> bool) ‑> string ‑> string ‑> bool
Exists a pair of chars?
Raises Invalid_argument : if the strings have not the same length.Since : 0.12Ascii functions Those functions are deprecated in String since 4.03, so we provide
a stable alias for them even in older versions.
val capitalize_ascii : string ‑> string
val uncapitalize_ascii : string ‑> string
val uppercase_ascii : string ‑> string
val lowercase_ascii : string ‑> string
val equal_caseless : string ‑> string ‑> bool
Comparison without respect to ascii lowercase.
Finding A relatively efficient algorithm for finding sub-strings.
module Find : sig ... end
Splitting module Split : sig ... end
val split_on_char : char ‑> string ‑> string list
Split the string along the given char.
val split : by:string ‑> string ‑> string list
Utils val compare_versions : string ‑> string ‑> int
compare_versions a b
compares version strings a
and b
,
considering that numbers are above text.
val compare_natural : string ‑> string ‑> int
Natural Sort Order, comparing chunks of digits as natural numbers.
https://en.wikipedia.org/wiki/Natural_sort_order
val edit_distance : string ‑> string ‑> int
Edition distance between two strings. This satisfies the classical
distance axioms: it is always positive, symmetric, and satisfies
the formula distance a b + distance b c >= distance a c
.
Slices A contiguous part of a string