OCaml将字符串转换为不带空格的字符数组

时间:2016-03-03 18:45:06

标签: arrays string ocaml

我正在进行OCaml任务,我陷入了需要将字符串转换为字符数组的部分。

要求是结果数组不应有空格。例如,

给定输入:

let s = "This is a string test";;

输出应为

 [|'t'; 'h'; 'i'; 's'; 'i'; 's'; 'a';'s';'t';'r';'i';'n';'g';'t';'t';'e';'s';'t';|];

使用以下说明解决此问题

let test = Array.init (String.length y) (fun t -> y.[t]);;

test的值中包含空格' '

2 个答案:

答案 0 :(得分:0)

一个问题是阵列很可能不会与字符串大小相同,因此使用Array.init并不是一个好的解决方案。所以,让我们来看看你想做什么:

  • 您将每个字符映射到数组的条目。
  • 由于您不希望包含空格,因此映射是有条件的。
  • 您不知道数组的最终大小,因此您需要动态创建它。

这是一种方法:

  • Array.concat将数组列表连接成一个数组。
  • 将字符串转换为微小数组列表 - 列表中的每个元素都是单个字符的数组,如果是空格,则为空数组。

由于这是一项任务,我将让您编写最终解决方案。

答案 1 :(得分:0)

还有另外两种方法可以做到这一点。由于这是一个校对,我不会给你代码,只是想法。

  1. 将字符串转换为字符列表,过滤掉所有' ' (这可以在一个循环或两个循环中完成)。然后将列表转换为数组。
  2. 计算字符串中不是空格的数量,创建一个合适的数组,循环将字符串复制到数组中(跳过空格)