Arrays OCAML在没有空格的情况下将字符串转换为字符数组

Arrays OCAML在没有空格的情况下将字符串转换为字符数组,arrays,string,ocaml,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 -

我正在做一个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的值中有空格“”。

一个问题是数组很可能与字符串大小不同,因此使用array.init不是一个好的解决方案。让我们看看你想做什么:

您正在将每个字符映射到数组的一个条目中。 映射是有条件的,因为您不希望包含空格。 您不知道数组的最终大小,因此需要动态创建它。 这里有一种方法:

concat将数组列表连接到单个数组中。 将字符串转换为一个小数组列表-列表中的每个元素都是一个由单个字符组成的数组,如果是空格,则是一个空数组。
由于这是一项作业,我将让你写出最终的解决方案。

还有两种方法。因为这是一个假设,我不会给你代码,只是想法

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