Scheme 如何删除列表中的冒号(:)?

Scheme 如何删除列表中的冒号(:)?,scheme,racket,Scheme,Racket,我开始学球拍了。有一个关于时间的例子,我需要从列表中删除冒号(:)。比如, 11:30->1130 我想这样做,因为我会把他们按顺序排列,第一,第二,第三和第四 附言:我的英语很抱歉 (define L (list "22:30")) (string-append (substring (first L) 0 2) (substring (first L) 3 5)) 输出:“2230”尝试以下操作: (string-replace "11:30" ":" "") 如果需要对数字进行处理,

我开始学球拍了。有一个关于时间的例子,我需要从列表中删除冒号(:)。比如,

11:30->1130

我想这样做,因为我会把他们按顺序排列,第一,第二,第三和第四

附言:我的英语很抱歉

(define L (list "22:30"))

(string-append (substring (first L) 0 2) (substring (first L) 3 5))
输出:“2230”

尝试以下操作:

(string-replace "11:30" ":" "")
如果需要对数字进行处理,可以将字符串转换为数字或数字列表。事情是这样的:

;; convert a string into an integer 
(define S (string->number (string-replace "11:30" ":" "")))

;; produce a list of digits from a given integer
(define (int->list n) 
  (cond [(zero? n) empty]
        [else
         (append (int->list (quotient n 10))
             (list (remainder n 10)))]))

;; try it in REPL
> (int->list S)
'(1 1 3 0)

@首先,我写它(定义(检查L)(对于([I(范围0(长度L)))(删除:L))(显示L))(检查(列表22:30 22:31))我不理解输出和输入之间的关系。1) 您的问题要求删除冒号,但冒号出现在输出中2)输入和输出之间似乎没有相关性。为什么有些时间完全被排除在输出之外?3)
“14:30”
显示在输出中,但它不是输入。@naomik是的,你说得对。这是不平衡的,我更正了。尝试使用
cons
而不是
append
;如有必要,您始终可以
反转结果。这是一个令人难以置信的性能提升,使您的代码看起来更加专业;-)当然,当性能很重要时,我会在代码中使用它,以及尾部递归。但在这个只有四个元素列表的示例代码中,即使使用分析工具,您可能也不会注意到性能上的任何差异,是吗?在关注性能的情况下,我可能会使用标准库中的string->list重写整个过程,具体取决于OP需要什么。后者正是问题所在,因为不清楚OP试图用这一串数字做什么。