【发布时间】:2012-12-09 18:07:11
【问题描述】:
我正在尝试在 Haskell 中创建一个函数来拆分某个 char 的字符串和某个数字的列表。
为此,splitAt 函数正是我需要的数字,但我不能用这个函数给出一个字符。
例如
splitAt 5 [1,2,3,4,5,6,7,8,9,10]
给予
([1,2,3,4,5],[6,7,8,9,10])
这正是我在元组左侧的 5 所需要的。
但现在我想用char 和一个字符串来做到这一点。但是splitAt 只接受和int 作为第二个参数。我想要
splitAt 'c' "abcde"
导致
("abc", "de")
我在寻找方向
splitAt (findIndex 'c' "abcde") "abcde"
但是函数findIndex返回Maybe Int类型的东西,splitAt需要Int。然后我尝试了以下
splitAt (head (findIndices (== 'c') "abcde")) "abcde"
这是一个可能的解决方案,但它返回以下内容
("ab","cde")
c 在元组的错误一侧。您可以将 succ 添加到 c 但如果 char 是 Z 会是什么结果。
有没有简单的修改方法
splitAt (findIndex 'c' "abcde") "abcde"
工作?
【问题讨论】:
-
如果您使用
break:: (a -> Bool) -> [a] -> ([a], [a])而不是splitAt,则不需要findIndex。 -
@SebastianPaaskeTørholm 但你在右边而不是左边得到
'c'。
标签: haskell