我必須撰寫一個cutString :: String -> [String]函式來將一個字串切割成一個字串串列。它應該在 '.' 處剪切。人物。
例如:
cutString "this.is.a.string" == ["this","is","a","string"]
cutString "" == [""]
cutString ".." == ["",""]
cutString ".this.is.a.string." == ["","this","is","a","string",""]
到目前為止,我有這個:
cutString [] = []
cutString [x]
| x == '.' = []
| otherwise = [[x]]
cutString (x:xs) = cutString [x] cutString xs
只留下句點(這部分是可取的),但也會逐個字符地切割整個字串。
像這樣:
["t","e","s","t","t","e","s","t","2"]
uj5u.com熱心網友回復:
您只是在查看第一個字符是否是一個只有一個元素的字串的點。您應該檢查每個元素。如果第一個字符是一個點,我們會產生一個空字串,然后是通過遞回生成的其余組。如果字符不是點,我們在遞回呼叫的第一個子串列前面加上,例如:
cutString :: String -> [String]
cutString [] = [""]
cutString ('.':xs) = "" : cutString xs
cutString (x:xs) = let ~(y:ys) = cutString xs in (x:y) : ys
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/386989.html
上一篇:對引數應用函式x次的函式
