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
val 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_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.
Conversions
val 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 strings
val 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 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
Splitting
module Split : sig ... end
Utils
val compare_versions : string -> string -> int
compare_versions a b
compares version strings a
and b
, considering that numbers are above text.
Slices
A contiguous part of a string