I am using this to split strings:
let split = Str.split (Str.regexp_string \" \") in
let tokens = split instr in
....
But the problem
Using Jane Street's Core library, you can do:
let python_split x =
String.split_on_chars ~on:[ ' ' ; '\t' ; '\n' ; '\r' ] x
|> List.filter ~f:(fun x -> x <> "")
;;
Since OCaml 4.04.0 there is also String.split_on_char
, which you can combine with List.filter
to remove empty strings:
# "pop esi"
|> String.split_on_char ' '
|> List.filter (fun s -> s <> "");;
- : string list = ["pop"; "esi"]
No external libraries required.
This is how I split my lines into words:
open Core.Std
let tokenize line = String.split line ~on: ' ' |> List.dedup
Mind the single quotes around the space character.
Here's the documentation for String.split
: link
Don't use Str.regexp_string
, it's only for matching fixed strings.
Use Str.split (Str.regexp " +")