Haskell:检查确切的子字符串

时间:2014-11-28 18:44:48

标签: haskell substring

我想编写一个函数来检查给定字符串中的EXACT子字符串。 我现在使用的只是isInfixOf但我的朋友刚刚指出它没有检查一个确切的词。

示例,如果我正在写

`"hi " `isInfixOf` "hi      you"` 

然后这将返回True。但我不希望这样。我想要的只是它应该返回True只有它包含"hi ",即恰好是一个空格。我怎样才能做到这一点?

1 个答案:

答案 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