2012-06-19 152 views
0

我有一个列表let a = ["q0,x";"q1,y"];,其类型为string list拆分OCaml中的字符串列表

我想使它成为[("q0","x");("q1","y")];这是一个(string * string)元组的列表。

我该怎么做?

回答

3

您可以使用模块Str和功能split

let split = 
    List.map (fun str -> 
     match Str.split (Str.regexp ",") str with 
     | a :: b :: _ -> a, b 
     | _ -> assert false (* should not happen *)) 
+0

我不明白这一点。 – user1280282

+0

你是否熟悉List.map函数?然后在这里检出ocaml标准库:[link](http://caml.inria.fr/pub/docs/manual-ocaml/libref/index.html)。 基本上,列表中的每个元素将被拆分,其中“,”被找到并作为列表返回,因此“q0,x”将变为[q0; x]。模式匹配标识第一个和第二个元素,并检查列表只有2个元素。当模式匹配时,返回元组 –

+0

您应该尝试从头开始学习OCaml。检查[ocaml-lang](http://ocaml-lang.org)你会发现一些非常好的教程的链接。 – cago

相关问题