2013-08-05 50 views
0

我需要從字符串中刪除一個字符,但我無法弄清楚如何指定一個count,這就是應該從string中刪除多少次character刪除字符串X中的字符X很多次

以下是我願意做它的Common Lisp:

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

;=> "bca" 

我會怎麼做,在雞的方案?

我在雞使用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" 

回答

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"