2016-10-15 36 views
0

所以當我回答這個問題時,我練習了球拍初學者的語言。在球拍中,如何使用字符串 - >列表或列表 - >字符串函數來替換字符串中的單詞?

編寫一個函數str-replace它消耗一個字符串,一個目標字符和一個 替換字符。該函數產生一個新的字符串,它與消耗的字符串相同,並且所有出現的目標字符(如果有的話)被替換字符替換。例如,(string-replace "word" #\o #\y) ⇒ "wyrd"

注意: 我不能使用string->listlist->string以外的任何內置字符串函數。

於是我開始用代碼現在我卡住了,我怎麼使用包裝函數這個代碼就我現在只有這

;; los is list of string  
(define(str-replace los) 
    (+(first los) 
    (first (rest los)) 
    (first (rest (rest los))) 
    (first (rest (rest (rest los)))))) 

回答

2

定義其上列出了操作轉換功能:

(define (replace-in-list input-list from-char to-char) 
    (if (null? input-list) 
     ... 
     (cons ... 
      (replace-in-list ... from-char to-char)))) 

(你必須填寫空白...

而且從另外一個稱呼它:

(define (str-replace input-string from-char to-char) 
    (list->string 
    (replace-in-list 
     (string->list input-string) from-char to-char))) 
+0

用什麼填充空格?我很困惑....此外,如何將此功能用於功能替換,請您詳細說明一下嗎? – Asha

+0

@Kiterunner(1)我將第二個函數改名爲'str-replace'。 (2)我沒有給你一個完整的解決方案,你必須考慮進入'...'的內容。如果第一個函數被賦予一個空列表,它應該返回什麼?應該爲列表中的每個字符做些什麼?所有你需要的信息都在等着你。請參閱https://docs.racket-lang.org/和https://mitpress.mit.edu/sicp/full-text/book/book.html。 – coredump

相關問題