0

文字列から文字を削除する必要がありますが、を指定する方法がわかりません。これは、チキン で削除するcount回数の制限です。characterstring

Common Lisp でそれを行う方法は次のとおりです。

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

;=> "bca"

Chicken-schemeでそれを行うにはどうすればよいですか?

私はdeleteChickenで使用してみましたが、Chicken'sは何か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 に答える