exchangeSymbols "a§ b$ c. 1. 2. 3/" = filter (Char.isAlphaNum) (replaceStr str " " "_")
上面的代碼應該首先將所有「空格」替換爲「_
」,然後根據Char.isAlphaNum
過濾字符串。不幸的是,Char.isAlphaNum
部分吸收已經交換的「_」,這不是我的意圖,我想保留「_
」。所以,我認爲這將是很好,只需添加一個例外,它是這樣的過濾器:Haskell過濾器選項級聯
exchangeSymbols "a§ b$ c. 1. 2. 3/" = filter (Char.isAlphaNum && /='_') (replaceStr str " " "_")
您看到添加的&& not /='_'
。它產生了一個parse error
,顯然不太可能連接過濾器選項,但有沒有一個聰明的解決方法?我考慮過包裝過濾功能,就像每次遞歸1000次左右,添加新的過濾測試(/='!')
,(/='§')
等等,而不添加(/='_')
。但它似乎並不是一個方便的解決方案。
請仔細閱讀後整體,然後回答delnan。 – kiltek 2011-04-29 20:58:38
沒關係,我讀了「補充」和我疲倦的大腦,雖然有第二個= /抱歉。 – delnan 2011-04-29 21:19:45