.net 递归地将字符串拆分为字符列表

.net 递归地将字符串拆分为字符列表,.net,string,recursion,f#,.net,String,Recursion,F#,我正在尝试递归地将字符串拆分为字符列表。这就是我要做的: let rec explode2 (s: string) = match s with | "" -> [] | s -> let newWord = s.[1..] let newArr = List.ofArray(newWord.ToCharArray()) explode2 newWord newArr 我的方向正确吗?第一部分是正确的(用于返回列表而不是数组): 它处理

我正在尝试递归地将字符串拆分为字符列表。这就是我要做的:

let rec explode2 (s: string) =
  match s with 
  | "" -> []
  | s ->
    let newWord = s.[1..]
    let newArr = List.ofArray(newWord.ToCharArray())
    explode2 newWord
    newArr
我的方向正确吗?

第一部分是正确的(用于返回列表而不是数组):

它处理空字符串的情况,在递归函数中,空字符串是结束情况

对于第二部分,您需要:

  • 将第一个字符与字符串的其余部分分开
  • 使用字符串的其余部分调用函数
  • 将第一个字符与返回的列表连接起来
要将元素连接到列表,可以使用
运算符:

c :: lst

你就快到了,继续努力。

谢谢!这是我提出的解决方案,它是有效的,但我不确定最后一行发生了什么,你能解释一下吗
let rec explode2(s:string)=将s与|“”->[]s->explode2(s.Remove(0,1))列表匹配。ofArray(s.tocharray())
s.tocharray()
是一个内置函数,可以完全按照您的要求执行操作。代码的其余部分实际上什么也没做。另外,它生成的是一个
List
而不是数组,这是因为
List.ofArray
将数组转换为列表。好的,谢谢!这是我的错误,函数应该返回
字符列表
而不是数组。好的,我更改了返回列表的答案。我把它作为练习。我试图表现得神秘。
c :: lst