简体   繁体   中英

Haskell: Replace a subString in a String without Data.List package

I'm very new in Haskell and I want to know how I can replace a predetermined word in a String by another word. This is my code so far, I know I can't do this for now:

traiter :: String -> String
traiter texte = texte

main::IO()
main = do argv <- getArgs
          texte <- readFile "intputText"
          print (separation texte)
          print ( traiter texte )


separation :: String -> [String]
separation [] = [""]
separation (c:cs) | c == "\Graph"  = "Graphic : " : reste
                  | c == '}'  = "" : reste
                  | c == '{'  = "" : reste
                  | otherwise = (c : head reste) : tail reste
    where reste = separation cs

So basically I know I can't put a String in the first c == "\\Graph" so I want to know how I can basically replace every word "\\Graph" in my String texte by "Graphic".

I want to be able to do that without importing any package.

If anyone can help me out I'd really appreciate it.

Thank you very much!

replace :: String -> String -> String-> String
replace [] token repl = []
replace str@(s:ss) token@(t:tx) repl

        -- check if first char of string equal to first char of token
        | s == t = case validateToken token str of
                Just list -> repl ++ replace list token repl
                Nothing -> s : replace ss token repl

        -- if not equal then continue recursion step
        | otherwise = s: replace ss token repl
                where
                        -- validate if token matches the following chars of the string
                        -- returns Nothing if token is not matched
                        -- returns the remaining string after the token if token is matched
                        validateToken:: String -> String -> Maybe String
                        validateToken (a:as) [] = Nothing
                        validateToken [] list = Just list
                        validateToken (a:as) (x:xs) 
                                | a == x = validateToken as xs 
                                | otherwise = Nothing

example = replace "yourString" "token" "new"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM