DrRacketでリストを文字列に変換するにはどうすればよいですか?たとえば、'(赤黄青緑)を「赤黄青緑」に変換するにはどうすればよいですか?list-> stringを使用してみましたが、これは文字に対してのみ機能するようです。
18514 次
2 に答える
10
ここでの秘訣は、入力として受け取った記号のリストをマッピングし、各記号を順番に文字列に変換し、最後の記号を除く各記号の間に空白を追加することです。このようなもの:
(define (slist->string slst)
(cond ((empty? slst) "")
((empty? (rest slst)) (symbol->string (first slst)))
(else (string-append (symbol->string (first slst))
" "
(slist->string (rest slst))))))
または、より簡単に、より高次の手順を使用します。
(define (slist->string slst)
(string-join (map symbol->string slst) " "))
いずれにせよ、期待どおりに機能します。
(slist->string '(red yellow blue green))
=> "red yellow blue green"
そして、念のために言うと、入力リストが文字列のリスト(質問のような記号ではない)である場合、答えは次のようになります。
(define strlist (list "red" "yellow" "blue" "green"))
(string-join strlist " ")
=> "red yellow blue green"
于 2013-03-21T14:11:22.220 に答える
5
Racketは、これを簡単にする多くのユーティリティ機能をサポートしています。リストの内容を確認するだけの場合は、「表示」だけで十分かもしれません。親がないことを気にする場合は、string-joinを使用できます。
#lang racket
(define my-list '(a big dog))
;; the easy way (has parens):
(~a my-list)
;; slightly harder
(string-join (map ~a my-list) " ")
于 2013-03-21T16:02:43.817 に答える