我想輸入2個元素列表(僅字母),其中第一個元素是字符串中的一個字母(findAndReplace的第二個參數),第二個是我想要的變化至。 Haskell中是否有一個函數可以做類似的事情?因爲這會有很大幫助!在Haskell中查找並替換
-1
A
回答
1
聽起來更像是您可能想要使用元組列表而不是第一個輸入的列表列表,因爲您指定了固定長度。元組的固定長度,其可具有混合類型的集合,而列表是單一類型的任意長度的集合:
myTuple = ('a', 'b') :: (Char, Char)
myTriple = ('a', 'b', 'c') :: (Char, Char, Char)
myList = ['a'..'z'] :: [Char]
聲明I如何必須指定的元組的每個字段的類型。另外,(Char, Char)
是而不是與(Char, Char, Char)
相同類型,它們不兼容。
因此,與元組,你可以有你的類型簽名replace
爲:
replace :: [(Char, Char)] -> String -> String
現在這個規定與該類型的簽名,它必須是對字符的列表來查找和替換,你不需要處理不好的輸入,就好像某人只給了一個角色去尋找而不是一個來代替它。
我們現在正在傳遞所謂的關聯列表,而Haskell甚至有一些內置函數用於在Data.List
和Data.Map
中處理它們。但是,對於這個練習,我認爲我們不需要它。
現在你想解決使用對列表這個問題,但是,如果我們解決了只用一對是它會更容易:
replace1 :: (Char, Char) -> String -> String
replace1 (findChr, replaceChr) text = ?
現在,您要檢查每個字符的text
,如果它等於findChr
,則要用replaceChr
替換它,否則不要保留它。
replace1 (findChr, replaceChr) text = map (\c -> ...) text
我會讓你填寫細節(提示:if-then-else)。
然後,您可以使用此函數使用更簡單的replace1
函數來構建您的replace
函數。這應該讓你開始,如果在一兩天之後仍然無法解決問題,請在下面評論,我會給你另一個提示。
相關問題
- 1. Haskell括號匹配查找和替換
- 2. 在ColdFusion中查找並替換
- 3. 在ajax調用中查找並替換?
- 4. 在記事本中查找並替換++
- 5. 在C文件中查找並替換
- 6. 在R中查找並替換
- 7. 在大文件中查找並替換
- 8. tcl在文件中查找並替換
- 9. 在android studio中查找並替換
- 10. 在Linux中查找並替換文本
- 11. 在excel中查找並替換文本
- 12. 在JEditorPane中查找並替換
- 13. 查找值並在r中替換
- 14. 在文件名中查找並替換
- 15. 在python中查找並替換文本
- 16. 在bash shell中查找並替換
- 17. 查找並替換值
- 18. 批量查找並替換
- 19. C#查找並替換
- 20. LISP查找並替換
- 21. 查找並替換QueryPath
- 22. Excel查找並替換宏
- 23. jquery查找並替換
- 24. 查找並替換powershell
- 25. Excel查找並替換
- 26. 查找並替換爲sed
- 27. docx4j查找並替換
- 28. 查找並替換爲JQuery
- 29. 查找並替換問題
- 30. 查找並替換爲Textarea
你嘗試了什麼?你究竟在哪裏卡住? – Matthias
我甚至不知道從哪裏開始! – James
寫下類型。 – Ingo