替换球拍列表中的字符串

时间:2019-03-28 16:33:37

标签: scheme racket

我试图仅使用抽象列表函数和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))

感谢所有帮助,谢谢!

1 个答案:

答案 0 :(得分:2)

快到了!您只需要问每个字符串:这是我要替换的字符串吗?然后替换它-否则保持不变:

(define (replace lst str rep)
  (map (lambda (x) (if (string=? x str) rep x)) 
       lst))