0

我需要从字符串中删除一个字符,但我不知道如何指定 a ,这是对应该从Chicken 中删除count多少次的限制。characterstring

这是我在 Common Lisp 中的做法:

(let ((a "abca")) (delete #\a a :count 1))

;=> "bca"

我将如何在 Chicken-scheme 中做到这一点?

我试过delete在鸡中使用,但鸡delete似乎不支持什么count东西,所以以下方法不起作用

(let ((a "abca")) (list->string (delete #\a (string->list a) :count 1)) ))

并且仅delete在字符串上运行会删除所有出现的char

(let ((a "abca")) (list->string (delete #\a (string->list a)) ))

;=> "bc"
4

1 回答 1

1
(define myfilter
  (lambda (lst char cnt)
    (if (null? lst)
      '() 
      (if (and (eq? (car lst) char) (> cnt 0)) 
        (myfilter (cdr lst) char (- cnt 1)) 
        (cons (car lst) (myfilter (cdr lst) char cnt))))))

(define delnchars
  (lambda (str char count)
    (list->string (myfilter (string->list str) char count))))

> (delnchars "3 i's will be removed, the last -> is here" #\i 3)
"3 's wll be removed, the last -> s here"
于 2013-08-05T22:02:43.290 回答