2013-02-24 63 views
0

repeat需要一個數字和一個字符串,並返回重複n次的字符串,用空格分隔。構建重複字符串與重複之間的空格

;; repeat: number string -> string 
(define (repeat n str) 
    (replicate n str)) 

(repeat 2 "home") 

給我:

"homehome" 

我將如何添加一個空格,因此它可以給我 「回家回家」?

回答

2

末到字符串str添加一個空格,將它傳遞給replicate前:

(replicate n (string-append str " ")) 

這將在年底離開一個額外的空間,如果你想擺脫它做的@託比亞提示:

(string-trim (replicate n (string-append str " "))) 
+0

'string-append:期待一個字符串作爲第一個參數,因爲3'就是我所得到的。 – Josh 2013-02-24 01:00:06

+1

或者只是修改空間:'(string-trim(replicate(string-append b「」)n))' – Tobia 2013-02-24 01:00:41

+0

@Josh看起來參數是反轉的(我認爲'n'是重複次數)。我更新了我的答案,請再試一次。 – 2013-02-24 01:04:02

1

球拍有一個內置的功能字符串加入這一點,所以在普通的球拍,這將是

> (string-join (build-list 2 (lambda (i) "home"))) 
"home home" 
+0

是的,但另一個答案更有效,因爲它不構建中間列表。 – Tobia 2013-02-25 09:26:16

+0

這是錯誤的。如果您查看replicate的定義,它也使用build-list(請參閱collect/lang/private/todo.rkt)。 – uselpa 2013-02-25 13:03:59