sig
  val combine : string list -> string
  val implode : char list -> string
  val of_array : char array -> string
  val map : (char -> char) -> string -> string
  val mapi : (char -> int -> char) -> string -> string
  val subpos : string -> int -> int -> string
  val repeat : string -> int -> string
  val iteri : (char -> int -> unit) -> string -> unit
  val fold_left : ('-> char -> 'a) -> '-> string -> 'a
  val fold_right : ('-> char -> 'a) -> string -> '-> 'a
  val ensure : (char -> bool) -> string -> bool
  val ensure_range : (char -> bool) -> string -> int -> int -> bool
  val explode : string -> char list
  val to_array : string -> char array
  val center : ?pad:char -> ?trunc:bool -> string -> int -> string
  val ljust : ?pad:char -> ?trunc:bool -> string -> int -> string
  val rjust : ?pad:char -> ?trunc:bool -> string -> int -> string
  type trim_style = [ `Both | `Left | `Right ]
  val trim : ?style:StrExtras.trim_style -> string -> char -> string
  val map_inplace : (char -> char) -> string -> unit
  val mapi_inplace : (char -> int -> char) -> string -> unit
  val rev : string -> string
  val first_word : string -> string
  val cut_first_char : string -> string
  val cut_first_n : string -> int -> string
  val cut_last_char : string -> string
  val cut_last_n : string -> int -> string
  val cut_first_word : string -> string
  val split_at : str:string -> sep:char -> string
  val chomp : string -> string
  val right : string -> int -> string
  val left : string -> int -> string
  val uppercase : string -> string
  val lowercase : string -> string
  val capitalize : string -> string
  val uncapitalize : string -> string
  val titlecase : string -> string
  val first_of : string -> string -> int
  val first_of_from : string -> string -> int -> int
  val last_of : string -> string -> int
  val last_of_from : string -> string -> int -> int
  val first_not_of : string -> string -> int
  val first_not_of_from : string -> string -> int -> int
  val last_not_of : string -> string -> int
  val last_not_of_from : string -> string -> int -> int
  val prefix : string -> string -> bool
  val suffix : string -> string -> bool
  val index_substr : string -> string -> int
  val index_substr_from : string -> string -> int -> int
  val match_substr : string -> string -> int -> bool
  module FastSearch :
    sig
      type t
      val study : string -> StrExtras.FastSearch.t
      val index : StrExtras.FastSearch.t -> string -> int
      val index_from : StrExtras.FastSearch.t -> string -> int -> int
    end
  val common_prefix : string list -> string
  val replace : string -> string -> string -> string
  val collate : string -> string -> int
  val compare_insensitive : string -> string -> int
  module Collate :
    sig
      type t = string
      val compare : StrExtras.Collate.t -> StrExtras.Collate.t -> int
      val equal : StrExtras.Collate.t -> StrExtras.Collate.t -> bool
      val hash : StrExtras.Collate.t -> int
    end
  module CaseInsensitive :
    sig
      type t = string
      val compare :
        StrExtras.CaseInsensitive.t -> StrExtras.CaseInsensitive.t -> int
      val equal :
        StrExtras.CaseInsensitive.t -> StrExtras.CaseInsensitive.t -> bool
      val hash : StrExtras.CaseInsensitive.t -> int
    end
end