Module CCString.Split

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