我想在 Haskell 中每 3 个字母拆分一个字符串。
我曾尝试使用 splitAt
,但我必须重复此操作,直到字符串每 3 个字母被拆分一次。
有办法吗?
例如
"WEAREDISCOVERED"
将变为 ["WEA","RED","ISC","OVE","RED"]
最佳答案
everyThree :: [a] -> [[a]]
everyThree [] = []
everyThree xs = begin : everyThree remain
where (begin, remain) = splitAt 3 xs
所以这适用于任何类型的列表,包括字符串。因此,如果列表为空,我们只返回一个空列表。否则我们splitAt 3
。幸运的是,splitAt
很聪明,如果剩余列表太短,它将只返回 1、2 或不返回。然后我们将该起始字符串附加到剩余的 everyThree
列表的头部。
关于string - SplitAt 3 然后继续 split ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19568178/