字符串替换功能中的球拍错误?

时间:2016-10-18 22:54:46

标签: list racket wrapper

我在写作 一个函数string-replace,它使用一个字符串,一个目标字符和一个 替换角色。该函数生成一个新的字符串,与该字符串相同 消耗的字符串,其中所有出现的目标字符(如果有)都替换为 替换角色。例如,(string-replace "word" #\o #\y) ⇒ "wyrd"

注意: 我不能使用除string->listlist->string

之外的任何内置字符串函数

我的代码看起来像

  (define(list-replace input-list from-char to-char)
     (string-replace input-list from-char to-char))

 (define(string-replace input-string from-char to-char)
  (list->string(string-replace(string->list input-string) from-char to-char)))

检查我输入       (string-replace "word" #\o #\y)我收到错误string->list: expects a string, given (cons #\w (cons #\o (cons #\r (cons #\d empty))))

有人可以帮助我使用此代码吗?

1 个答案:

答案 0 :(得分:0)

还可以使用'for/list'创建修改后的列表(从输入字符串转换为列表)。然后可以将修改后的列表转换为修改后的字符串:

(define (string-replace input-string from-char to-char)
  (list->string
   (for/list ((item (string->list input-string)))   
     (if (equal? item from-char)
         to-char
         item))))

(string-replace "word" #\o #\y)
"wyrd"