在Racket中小写整个字符串

时间:2013-04-03 05:59:33

标签: string scheme racket lowercase

有没有办法将字符串中的所有字符转换为Racket中的小写字母?

我能想到的唯一方法是转换char-downcase但它不适用于字符串

我使用的是初学者语言,因此我无法使用某些功能

1 个答案:

答案 0 :(得分:8)

实际上,您可以使用string-downcase程序:

(string-downcase "ABCDE")
=> "abcde"

但是你正在使用初学者的语言,所以这里是解决它的一般想法 - 我会给你一些提示,如果你试图自己解决问题会更好。首先,让我们将问题分成两部分:一个将字符串转换为字符列表的过程,调用执行实际转换的辅助过程,最后将转换后的列表转换回字符串:

(define (lowercase str)
  (<???>           ; convert the list of chars into a string
   (convert        ; call the helper procedure
    (<???> str)))) ; convert the string into a list of chars

convert过程是一个帮助程序,它可以解决繁重的问题,并将字符列表中的每个字符转换为小写:

(define (convert strlst)
  (if <???>                  ; if the list of chars is empty
      <???>                  ; return the empty list
      (cons                  ; else `cons`
       (<???> <???>)         ; convert to lowercase the first char in list
       (convert <???>))))    ; advance recursion over list

解决方案的关键部分是操作stringscharacters的过程,点击链接并研究文档。