方案:如何将charlist转换为字符串

时间:2015-04-20 20:51:54

标签: string scheme type-conversion racket

我很难过。我试图将一个charlist转换回一个字符串,但它仍然失败:它很愚蠢,因为当我将结果从一个函数粘贴到另一个函数时它工作正常,但如果我在函数内部执行它失败...

实施例: 这工作

  

(删除" h ell o")   输出:'(#\ h#\ e#\ l ## \ l#\ o)   (convertToString'(#\ h#\ e#\ l ## \ l#\ o))   输出:"你好"

但这不起作用,如果在删除中调用conertToString,则会发生

  

(删除"地狱o")   输出:。 。 list-> string:合同违规     预期:( char的列表?)     给出:'(#\ l。" o")

(define deleteCh;driver
  (lambda (s)
    (delete(string->list s))))

(define delete 
  (lambda (input)
    (cond
      [(null? input) input]
      [(equal? (car input) #\space)  (delete (cdr input))]
      [else (convertToString (cons (car input) (delete (cdr input))))])));this works without convertToString 

(define convertToString
  (lambda (charList)
    (list->string charList)))

1 个答案:

答案 0 :(得分:1)

您的问题出在delete。对于每个不是空格的字符,您可以convertToString得到结果。因此用字符串" abc"它会做

(convertToString (cons #\a (convertToString (cons #\b (convertToString (cons #\c '()))))))

提示..您需要convertToStringlist->string的有趣包装),结果为deleteCh,而不是每个子结果。