2013-04-03 8 views
3

Racket에서 문자열의 모든 문자를 소문자로 변환 할 수있는 방법이 있습니까? 당신을 내가 생각할 수있는소문자 라켓의 전체 문자열

유일한 방법은 숯불와 downcase을 돌고 있지만, 나는 내가 실제로

+0

감사합니다. Alastair Pitts! – user2113651

+0

[documentation] (http://docs.racket-lang.org/reference/strings.html?q=string#%28tech._string%29)에서 : '문자열은 다음과 같은 고정 길이 배열입니다. 문자입니다. 그래서 실제 문제는 배열 작업 방법입니다. –

답변

8

일부 기능을 사용할 수 없습니다 초보자의 언어를 사용하고 문자열

작동하지 않습니다 그래서 여기를 해결하기위한 일반적인 생각이다,

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

하지만 초보자의 언어로 작업 - 내가 당신에게 몇 가지 힌트를 줄 것이다, 당신이 해결하려고하면 그것은 더 나은 : '이것에 대한 string-downcase 절차를 사용 거라고 너 자신에 의한 문제. 먼저, 두 부분으로 문제를 분할하자 : 문자 목록에 문자열로 변환 한 절차, 실제 변환을 수행하고 마지막으로 문자열로 다시 변환 목록을 켤 수있는 헬퍼 프로 시저를 호출 :

(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를 조작하기위한 절차입니다 및 문서를 연구하십시오.