在Racket中将整个字符串转换为小写

7
有没有方法可以将Racket中字符串中的所有字符转换为小写?
我能想到的唯一方法是使用char-downcase,但它不能用于字符串。
我正在使用初学者语言,因此我无法使用某些函数。

感谢Alastair Pitts! - user2113651
文档中可以得知:“字符串是一个固定长度的字符数组。”因此,你真正的问题是如何处理数组。 - Sebastian Mach
1个回答

12

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接