You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Haskell如何将字符串分割为5段并生成字符串列表

解决Haskell字符串分割为5段的问题

你的代码问题在于每次递归都会重新计算当前子串的calctake值,但递归过程中子串长度在不断缩短,导致每次截取的长度不一致,最终无法正确分成5段。正确的做法是只计算一次每个片段的长度,然后用这个固定值来递归分割字符串。

修正后的代码

splitintoFive :: String -> [String]
splitintoFive s = split chunkSize s
  where
    chunkSize = length s `div` 5
    split _ [] = []
    split n xs = take n xs : split n (drop n xs)

代码说明

  1. 首先在where块中计算chunkSize:也就是原字符串长度除以5,这个值只计算一次,是固定的每个片段的长度。
  2. 定义辅助函数split,接收固定的片段长度n和待分割的字符串xs:
    • 如果xs为空,返回空列表;
    • 否则截取前n个字符作为当前片段,再递归分割剩下的子串。

验证示例

比如输入长度为10的字符串"abcdefghij",chunkSize为2,分割结果就是["ab", "cd", "ef", "gh", "ij"],完全符合要求。

内容的提问来源于stack exchange,提问作者Stackbot124

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 13:55:16