我正在编写一个string-replace函数,它使用一个字符串、一个目标字符和一个替换字符。该函数生成一个新字符串,该字符串与使用的字符串相同,所有出现的目标字符(如果有)都替换为替换字符。例如,(string-replace "word" #\o #\y) ⇒ "wyrd"
注意:除了string->list和list->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))))
有人能在这段代码中帮助我让它工作吗?
发布于 2016-10-19 23:28:59
还可以使用'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"https://stackoverflow.com/questions/40119385
复制相似问题