module CCString:sig
..end
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 -> [ `Cons of 'a * 'a klist | `Nil ]
module type S =sig
..end
include String
val equal : string -> string -> bool
val compare : string -> string -> int
val hash : string -> int
val init : int -> (int -> char) -> string
Array.init
.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.side
: determines where padding occurs (default: `Left
)c
: the char used to pad (default: ' ')val of_char : char -> string
of_char 'a' = "a"
val of_gen : char gen -> string
val of_seq : char sequence -> 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
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.start
: starting position in s
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 liststart
: starting position in s
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
sub
in string from the right, returns its first index or -1
.
Should only be used with very small sub
val replace : ?which:[ `All | `Left | `Right ] ->
sub:string -> by:string -> string -> string
replace ~sub ~by s
replaces some occurrences of sub
by by
in s
Invalid_argument
if sub = ""
which
: decides whether the occurrences to replace are:
`Left
first occurrence from the left (beginning)`Right
first occurrence from the right (end)`All
all occurrences (default)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
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
otherwiseval 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
otherwiseval 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
.Invalid_argument
if i
is an invalid indexval iter : (char -> unit) -> string -> unit
String.iter
val iteri : (int -> char -> unit) -> string -> unit
val map : (char -> char) -> string -> string
val mapi : (int -> char -> char) -> string -> string
val filter_map : (char -> char option) -> string -> string
val filter : (char -> bool) -> string -> string
val flat_map : ?sep:string -> (char -> string) -> string -> string
sep
: optional separator between each generated stringval for_all : (char -> bool) -> string -> bool
val exists : (char -> bool) -> string -> bool
include CCString.S
val ltrim : t -> t
String.trim
for more details)val rtrim : t -> t
String.trim
for more details)val map2 : (char -> char -> char) -> string -> string -> string
Invalid_argument
if the strings have not the same lengthval iter2 : (char -> char -> unit) -> string -> string -> unit
Invalid_argument
if the strings have not the same lengthval iteri2 : (int -> char -> char -> unit) -> string -> string -> unit
Invalid_argument
if the strings have not the same lengthval fold2 : ('a -> char -> char -> 'a) -> 'a -> string -> string -> 'a
Invalid_argument
if the strings have not the same lengthval for_all2 : (char -> char -> bool) -> string -> string -> bool
Invalid_argument
if the strings have not the same lengthval exists2 : (char -> char -> bool) -> string -> string -> bool
Invalid_argument
if the strings have not the same length
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
String
.val uncapitalize_ascii : string -> string
String
.val uppercase_ascii : string -> string
String
.val lowercase_ascii : string -> string
String
.val equal_caseless : string -> string -> bool
A relatively efficient algorithm for finding sub-strings
module Find:sig
..end
module Split:sig
..end
val split_on_char : char -> string -> string list
val split : by:string -> string -> string list
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
val edit_distance : string -> string -> int
distance a b + distance b c >= distance a c
module Sub:sig
..end