String 在3时分开,然后继续分开
我想在Haskell中每隔3个字母拆分一个字符串 我曾尝试使用String 在3时分开,然后继续分开,string,haskell,split,String,Haskell,Split,我想在Haskell中每隔3个字母拆分一个字符串 我曾尝试使用splitAt,但我必须重复此操作,直到字符串每3个字母拆分一次 有办法做到这一点吗 例如 “WEAREDISCOVERED”将变成[“WEA”、“RED”、“ISC”、“OVE”、“RED”] 所以这适用于任何类型的列表,包括字符串。因此,如果列表为空,我们只返回一个空列表。否则,我们将在3处拆分。幸运的是,splitAt是智能的,如果剩余列表太短,则只返回一个、两个或无。然后,我们将开始字符串附加到剩余everyThree列表的头
splitAt
,但我必须重复此操作,直到字符串每3个字母拆分一次
有办法做到这一点吗
例如
“WEAREDISCOVERED”
将变成[“WEA”、“RED”、“ISC”、“OVE”、“RED”]
所以这适用于任何类型的列表,包括字符串。因此,如果列表为空,我们只返回一个空列表。否则,我们将在3处拆分。幸运的是,splitAt
是智能的,如果剩余列表太短,则只返回一个、两个或无。然后,我们将开始字符串附加到剩余everyThree
列表的头部
import Data.List.Split (chunksOf)
everyThree :: [a] -> [[a]]
everyThree = chunksOf 3
如今Data.List.Split是Haskell平台的一部分 实际上,这并不管用:chunk::Int->[a]->[[a]]chunk[]=[]chunk n xs=first:chunk n rest where(first,rest)=splitAt n xstakeWhile(not.null)。Unfover(Just.splitAt 3)$“QWERQWER”
可以满足您的需要<代码>展开器
在数据列表
中定义。
import Data.List.Split (chunksOf)
everyThree :: [a] -> [[a]]
everyThree = chunksOf 3