.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