Documentation
containers lib
CCString
Module
Basic String UtilsConsider 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 Signaturemodule type S = sig ... end
Stringsval equal : string -> string -> bool
val compare : string -> string -> int
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.
val of_char : char -> string
val of_gen : char gen -> string
val of_klist : char klist -> string
val of_list : char list -> string
val of_array : char array -> string
val to_array : string -> char array
val find : ?start :int -> sub :string -> string -> int
Find sub
in string, returns its first index or -1
. Should only be used with very small sub
val find_all : ?start :int -> sub :string -> string -> int gen
find_all ~sub s
finds all occurrences of sub
in s
, even overlapping instances.
val find_all_l : ?start :int -> sub :string -> string -> int list
find_all ~sub s
finds all occurrences of sub
in s
and returns them in a list
val 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_pref ~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
.
val 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
val filter : (char -> bool) -> string -> string
val flat_map : ?sep :string -> (char -> string) -> string -> string
Map each chars to a string, then concatenates them all
val for_all : (char -> bool) -> string -> bool
val exists : (char -> bool) -> string -> bool
include S with type t := string
val length : string -> int
val blit : string -> int -> Bytes.t -> int -> int -> unit
Similar to String.blit
. Compatible with the -safe-string
option.
val fold : ('a -> char -> 'a ) -> 'a -> string -> 'a
Fold on chars by increasing index.
Conversionsval to_gen : string -> char gen
val to_klist : string -> char klist
val to_list : string -> char list
Print the string within quotes
Operations on 2 stringsval map2 : (char -> char -> char) -> string -> string -> string
val iter2 : (char -> char -> unit) -> string -> string -> unit
Iterate on pairs of chars
val iteri2 : (int -> char -> char -> unit) -> string -> string -> unit
Iterate on pairs of chars with their index
val fold2 : ('a -> char -> char -> 'a ) -> 'a -> string -> string -> 'a
val for_all2 : (char -> char -> bool) -> string -> string -> bool
All pairs of chars respect the predicate?
val exists2 : (char -> char -> bool) -> string -> string -> bool
Ascii functionsThose 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
FindingA relatively efficient algorithm for finding sub-strings
module Find : sig ... end
Splittingmodule Split : sig ... end
Utilsval compare_versions : string -> string -> int
compare_versions a b
compares version strings a
and b
, considering that numbers are above text.
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
SlicesA contiguous part of a string