2013-04-03 2 views
3

Есть ли способ превратить все символы в строке в нижний регистр в Racket?Нижняя часть целая строка в Racket

Единственный способ, которым я могу думать превращается обугленным-downcase, но он не будет работать со строками

Я использую язык начинающего, так что я не могу использовать некоторые функции

+0

Спасибо Alastair Питтс! – user2113651

+0

Из [документации] (http://docs.racket-lang.org/reference/strings.html?q=string#%28tech._string%29): 'Строка представляет собой массив с фиксированной длиной characters.' Так что ваша настоящая проблема заключается в том, как работать с массивами. –

ответ

8

На практике вам «d использовать 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 

основные части решения являются процедуры для манипулирования strings и characters, нажмите на ссылки и изучите документацию.

Смежные вопросы