containers

A modular, clean and powerful extension of the OCaml standard library
Legend:
Library
Module
Module type
Parameter
Class
Class type
Library containers
type drop_if_empty = {
first : bool;
last : bool;
}

Specification of what to do with empty blocks, as in split ~by:"-" "-a-b-".

  • {first=false; last=false} will return ""; "a"; "b"; ""
  • {first=true; last=false} will return "a"; "b" ""
  • {first=false; last=true} will return ""; "a"; "b"
  • {first=true; last=true} will return "a"; "b"

The default value of all remaining functions is Drop_none.

  • since 1.5
val no_drop : drop_if_empty

Do not drop any group, even empty and on borders.

  • since 1.5
val list_ : ?drop:drop_if_empty -> by:string -> string -> (string * int * int) list

Split the given string along the given separator by. Should only be used with very small separators, otherwise use Containers_string.KMP.

  • returns

    a list of slices (s,index,length) that are separated by by. String.sub can then be used to actually extract a string from the slice.

  • raises Failure

    if by = "".

val gen : ?drop:drop_if_empty -> by:string -> string -> (string * int * int) gen
val iter : ?drop:drop_if_empty -> by:string -> string -> (string * int * int) sequence
  • since 2.8
val std_seq : ?drop:drop_if_empty -> by:string -> string -> (string * int * int) Seq.t
  • since 2.8
val seq : ?drop:drop_if_empty -> by:string -> string -> (string * int * int) sequence
val klist : ?drop:drop_if_empty -> by:string -> string -> (string * int * int) klist
Copying functions

Those split functions actually copy the substrings, which can be more convenient but less efficient in general.

val list_cpy : ?drop:drop_if_empty -> by:string -> string -> string list
val gen_cpy : ?drop:drop_if_empty -> by:string -> string -> string gen
val iter_cpy : ?drop:drop_if_empty -> by:string -> string -> string sequence
  • since 2.8
val std_seq_cpy : ?drop:drop_if_empty -> by:string -> string -> string Seq.t
  • since 2.8
val seq_cpy : ?drop:drop_if_empty -> by:string -> string -> string sequence
val klist_cpy : ?drop:drop_if_empty -> by:string -> string -> string klist
val left : by:string -> string -> (string * string) option

Split on the first occurrence of by from the leftmost part of the string.

  • since 0.12
val left_exn : by:string -> string -> string * string

Split on the first occurrence of by from the leftmost part of the string.

  • raises Not_found

    if by is not part of the string.

  • since 0.16
val right : by:string -> string -> (string * string) option

Split on the first occurrence of by from the rightmost part of the string.

  • since 0.12
val right_exn : by:string -> string -> string * string

Split on the first occurrence of by from the rightmost part of the string.

  • raises Not_found

    if by is not part of the string.

  • since 0.16