我想编写一个函数来检查给定字符串中的EXACT子字符串。
我现在使用的只是isInfixOf
但我的朋友刚刚指出它没有检查一个确切的词。
示例,如果我正在写
`"hi " `isInfixOf` "hi you"`
然后这将返回True
。但我不希望这样。我想要的只是它应该返回True
只有它包含"hi "
,即恰好是一个空格。我怎样才能做到这一点?
答案 0 :(得分:2)
您好像正在寻找isInfixOf
的某种修改版本:
import Data.Maybe
import Data.List
isInfixOf' :: String -> String -> Bool
isInfixOf' xs ys = any p [stripPrefix xs zs | zs <- tails ys]
where
p Nothing = False
p (Just (' ' : _)) = False
p _ = True
我们的想法是首先收集匹配子字符串后面的所有字符串,然后测试它们是否以空格开头。
例如:
> "hi " `isInfixOf'` "hi you"
False
> "hi " `isInfixOf'` "hi you"
True