7

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

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

我正在使用初学者语言,所以我无法使用某些功能

4

1 回答 1

11

在实践中,您将使用以下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

该解决方案的关键部分是操作字符串字符的程序,单击链接并研究文档。

于 2013-04-03T13:57:23.197 回答