我正在尝试编写一个函数,该函数需要一个搜索词列表、一个替换词列表和一个将使用它们的字符串。
listReplace :: [String] -> [String] -> String -> String
棘手的部分是,如果合适的搜索词是第 n 个,那么应该使用第 n 个替换词。此外,当使用了替换词时,如果它实际上是搜索词本身,则不应将其替换为不同的替换词。我已经为
replace :: String -> String -> String -> String:
replace x y [] = []
replace x y (z:zs) = if isPrefixOf x (z:zs) then y ++ replace x y (drop (length x) (z:zs)) else z: (replace x y zs)
和
replace' :: String -> [String] -> String -> String:
replace' x y [] = []
replace' x [] (z:zs) = []
replace' x y (z:zs) = if isPrefixOf x (z:zs) then concat (take 1 y) ++ replace' x (drop 1 y) (drop (length x) (z:zs)) else z: (replace' x y zs)
我只是不知道如何从这个 replaceList 函数开始,到目前为止,我发现的唯一可能真正有用的是替换列表中第 n 个元素的函数。但我似乎无法弄清楚如何在这种情况下使用它:
replace :: Int -> a -> [a] -> [a]
replace n a [] = []
replace 0 a (x:xs) = a : xs
replace n a (x:xs) = x : replace (n-1) a xs
好吧,希望你们中的一个可以帮助我!提前致谢 :)