繁体   English   中英

如何在 OCaml 中将字符列表转换为字符串?

[英]How to convert char list to string in OCaml?

我有一个字符列表['a';'b';'c']

如何将其转换为字符串“abc”?

谢谢 x

您可以创建一个长度等于列表长度的字符串,然后使用计数器折叠列表并使用列表内容初始化字符串......但是,从 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
let cl2s cl = String.concat "" (List.map (String.make 1) cl)

从 OCaml 4.07 开始,您可以使用序列轻松地做到这一点。

let l = ['a';'b';'c'] in
let s = String.of_seq (List.to_seq l) in
assert ( s = "abc" )

常用的Base库还提供了Base.String.of_char_list

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM