Module NesString

include module type of struct include Stdlib.String end
type t = string
val make : int -> char -> string
val init : int -> (int -> char) -> string
val empty : string
val length : string -> int
val get : string -> int -> char
val of_bytes : bytes -> string
val to_bytes : string -> bytes
val blit : string -> int -> bytes -> int -> int -> unit
val cat : string -> string -> string
val equal : t -> t -> bool
val compare : t -> t -> int
val contains_from : string -> int -> char -> bool
val rcontains_from : string -> int -> char -> bool
val contains : string -> char -> bool
val sub : string -> int -> int -> string
val split_on_char : char -> string -> string list
val map : (char -> char) -> string -> string
val mapi : (int -> char -> char) -> string -> string
val fold_left : ('acc -> char -> 'acc) -> 'acc -> string -> 'acc
val fold_right : (char -> 'acc -> 'acc) -> string -> 'acc -> 'acc
val escaped : string -> string
val uppercase_ascii : string -> string
val lowercase_ascii : string -> string
val capitalize_ascii : string -> string
val uncapitalize_ascii : string -> string
val iter : (char -> unit) -> string -> unit
val iteri : (int -> char -> unit) -> string -> unit
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 index : string -> char -> int
val index_opt : string -> char -> int option
val rindex : string -> char -> int
val rindex_opt : string -> char -> int option
val to_seq : t -> char Stdlib.Seq.t
val to_seqi : t -> (int * char) Stdlib.Seq.t
val of_seq : char Stdlib.Seq.t -> t
val get_utf_8_uchar : t -> int -> Stdlib.Uchar.utf_decode
val is_valid_utf_8 : t -> bool
val get_utf_16be_uchar : t -> int -> Stdlib.Uchar.utf_decode
val is_valid_utf_16be : t -> bool
val get_utf_16le_uchar : t -> int -> Stdlib.Uchar.utf_decode
val is_valid_utf_16le : t -> bool
val get_uint8 : string -> int -> int
val get_int8 : string -> int -> int
val get_uint16_ne : string -> int -> int
val get_uint16_be : string -> int -> int
val get_uint16_le : string -> int -> int
val get_int16_ne : string -> int -> int
val get_int16_be : string -> int -> int
val get_int16_le : string -> int -> int
val get_int32_ne : string -> int -> int32
val hash : t -> int
val seeded_hash : int -> t -> int
val get_int32_be : string -> int -> int32
val get_int32_le : string -> int -> int32
val get_int64_ne : string -> int -> int64
val get_int64_be : string -> int -> int64
val get_int64_le : string -> int -> int64
val unsafe_get : string -> int -> char
val unsafe_blit : string -> int -> bytes -> int -> int -> unit
val pp : Stdlib.Format.formatter -> string -> unit
val remove_char : ?char_equal:(Stdlib.Char.t -> Stdlib.Char.t -> bool) -> Stdlib.Char.t -> string -> string
val split : int -> string -> string * string
val split' : int -> string -> string * string
val starts_with : ?equal:(t -> t -> bool) -> needle:t -> string -> bool
val ends_with : ?equal:(t -> t -> bool) -> needle:t -> string -> bool
val remove_prefix_exn : needle:string -> string -> string
val remove_prefix : needle:string -> string -> string option
val remove_suffix_exn : needle:string -> string -> string
val remove_suffix : needle:string -> string -> string option

distance needle haystack is the Levenshtein distance between needle and haystack. The character equality can be changed with the optional ?char_equal argument, defaulting to Char.equal.

val distance : ?char_equal:(Stdlib.Char.t -> Stdlib.Char.t -> bool) -> string -> string -> int

The proximity is defined roughly as the distance divised by the size.

val proximity : ?char_equal:(Stdlib.Char.t -> Stdlib.Char.t -> bool) -> string -> string -> float

inclusion_distance ~needle haystack is similar to distance needle haystack except with the best sub-string of haystack. Note: this is not a proper distance.

val inclusion_distance : ?char_equal:(Stdlib.Char.t -> Stdlib.Char.t -> bool) -> needle:string -> string -> int

Similar to proximity but for inclusion_distance.

val inclusion_proximity : ?char_equal:(Stdlib.Char.t -> Stdlib.Char.t -> bool) -> needle:string -> string -> float
val escape : ?esc:char -> chars:string -> string -> string
val exists : (char -> bool) -> t -> bool
val for_all : (char -> bool) -> t -> bool
val slugify : ?sep:char -> string -> string
val is_slug : ?sep:char -> string -> bool
module Sensible : sig ... end
val compare_lengths : string -> string -> int
module Set : sig ... end
module Map : sig ... end
val whitespace_chars : char list
val ltrim : ?char_equal:(Stdlib.Char.t -> Stdlib.Char.t -> bool) -> ?chars:Stdlib.Char.t list -> string -> string
val rtrim : ?char_equal:(Stdlib.Char.t -> Stdlib.Char.t -> bool) -> ?chars:Stdlib.Char.t list -> string -> string
val trim : ?char_equal:(Stdlib.Char.t -> Stdlib.Char.t -> bool) -> ?chars:Stdlib.Char.t list -> string -> string
val remove_duplicates : ?char_equal:(Stdlib.Char.t -> Stdlib.Char.t -> bool) -> ?char:Stdlib.Char.t -> string -> string
val concat : ?last:string -> string -> string NesList.t -> string

Richer version of concat that can also handle differently the last separator. For instance, concat ~last:" & " ", " ["a"; "b"; "c"] = "a, b & c".

val split_2_on_char : char -> string -> (string * string) option
val split_3_on_char : char -> string -> (string * string * string) option
val replace_empty : by:string -> string -> string