# Module Xstr_split

    module Xstr_split: sig .. end

    val split_string : string -> bool -> bool -> string list -> string -> string list

split_string ignoreset ignoreleft ignoreright separators s:

Splits 's' into words; the other parameters control the recognition of words. 'separators' is a list of strings that may separate the words. 'ignoreset' is a list of characters (written as string) that are ignored before and after separators. 'ignoreleft' controls whether characters can be ignored before the first word, too. 'ignoreright' controls whether characters can be ignored after the last word, too.

Empty separators may have strange effects. Do not use them.

'ignoreleft = false' implies that at least one word will be found. For example: split_string " " false true `","` " " = `""` 'ignoreright = false' does not have this effect: split_string " " true false `","` " " = ``

Note that it is possible to ignore characters that are the beginning of separators. E.g. split_string " " true true `" "` " ab c d " = `"ab"; "c"; "d"`

If many strings are splitted with the same rules, the following is the recommended way: let split_rule = split_string ign il ir seps in ...call many times split_rule s for different values of s... It is much more efficient than calling split_string directly.

`Note thread-safety: such a 'split_rule' is allowed to be shared by several threads.`

EXAMPLES:

- split_string " " true true `","` "a, b, c ,d " = `"a"; "b"; "c"; "d"`
- split_string "" true true `","` "a, b, c ,d " = `"a"; " b"; " c "; "d "`
- split_string " " false false `","` "a, b, c ,d " = `"a"; "b"; "c"; "d "`