我试图仅使用抽象列表函数和lambda将列表中的字符串替换为另一个给定的字符串。 该函数使用lst,字符串列表,str,您要替换的字符串和rep(您要替换str的字符串)。 这是一个例子: (替换(列表“ hi”,“ how””,“ are”,“ you”),“ hi”,“ bye”)->(列表“ bye”,“ how”,“ are”,“ you”)
下面写的是我递归编写的代码,它可以工作。
(define (replace lst str rep)
(cond [(empty? lst) empty]
[(equal? match (first lst))
(cons rep (replace-all (rest lst) match rep))]
[else (cons (first lst) (replace-all (rest lst) match rep))]))
下面是我尝试过的代码,但我不确定如何修复它以使其产生所需的内容。
(define (replace lst str rep)
(map (lambda (x) (string=? x str)) lst))
感谢所有帮助,谢谢!
答案 0 :(得分:2)
快到了!您只需要问每个字符串:这是我要替换的字符串吗?然后替换它-否则保持不变:
(define (replace lst str rep)
(map (lambda (x) (if (string=? x str) rep x))
lst))