我有一个字符列表['a';'b';'c']
如何将其转换为字符串“abc”?
谢谢x
答案 0 :(得分:5)
let cl2s cl = String.concat "" (List.map (String.make 1) cl)
答案 1 :(得分:5)
您可以创建一个长度等于列表长度的字符串,然后使用计数器折叠列表,并使用列表内容初始化字符串...但是,从OCaml 4.02开始,字符串类型开始向不变性方向移动(并在4.06中变为不可变),您应该开始将字符串视为不可变数据结构。那么,让我们尝试另一种解决方案。有Buffer
模块专门用于字符串构建:
# let buf = Buffer.create 16;;
val buf : Buffer.t = <abstr>
# List.iter (Buffer.add_char buf) ['a'; 'b'; 'c'];;
- : unit = ()
# Buffer.contents buf;;
- : string = "abc"
或者,作为一个功能:
let string_of_chars chars =
let buf = Buffer.create 16 in
List.iter (Buffer.add_char buf) chars;
Buffer.contents buf
答案 2 :(得分:2)
从OCaml 4.07开始,您可以使用序列轻松地做到这一点。
let l = ['a';'b';'c'] in
let s = String.of_seq (List.to_seq l) in
assert ( s = "abc" )
答案 3 :(得分:0)
常用的基本库还提供Base.String.of_char_list