首页 > 解决方案 > 如何拆分具有两个条件的字符串?

问题描述

所以基本上我想用两个条件分割我的字符串,当有一个空格或与下一个不同的字母时。

一个例子:

如果我有这个字符串,"AAA ADDD DD"我想拆分成这个,["AAA","A","DDD","DD"]

所以我做了这个代码:

sliceIt :: String -> [String]
sliceIt xs = words xs

但它仅在存在空白时才拆分初始字符串。当一个字符与另一个字符相邻时,我如何也可以拆分?这个问题可以用递归更容易解决吗?

标签: haskell

解决方案


所以你想分割words,然后group在每个分割中相等的元素。你有这样做的功能,

import Data.List

sliceIt :: String -> [String]
sliceIt s = concatMap group $ words s  

sliceItPointFree = concatMap group . words -- Point free notation. Same but cooler

推荐阅读