好的,所以我试图编写一个函数来确定另一个字符串中字符串的位置,如果第一个字符串是第二个字符串的子列表。说那里有一个像#"馅饼"和另一个喜欢" applepie",函数将返回5,因为"馅饼"在#34; applepie"
的字符串中的位置5有没有人知道我该怎么做?
答案 0 :(得分:2)
查看this问题。几天前它被问及(并回答)并且涵盖完全您的问题。
我的解决方案:
findStr :: String -> String -> Maybe Int
findStr pat str = findStrHelp pat str 0
where
findStrHelp _ [] _ = Nothing
findStrHelp pat s@(x:xs) n
| pat == (take (length pat) s) = Just n
| otherwise = findStrHelp pat xs (n+1)
要获得此代码,请删除findStrHelp _ [] _
行并将Just n
更改为n
。同时将类型签名中的Maybe Int
更改为Int
。