文字と整数のリストがあり、文字列に変換しようとしています。文字列と文字列のリストを文字列に変換する方法
> (define l (cons #\a (cons #\b (cons 3 null))))
このリストを文字列"ab3"
に変換したいとします。
動作しないlist->string
を使用する:
> (define l (cons #\a (cons #\b (cons (integer->char 3) null))))
> (list->string l)
"ab\u0003"
が動作しないかんnumber->string
を使用して::
> (list->string l)
list->string: contract violation
expected: (listof char?)
given: (list #\a #\b 3)
私はinteger->char
と組み合わせることをしようと、それはこの数値を与えます
> (define l (cons #\a (cons #\b (cons (number->string 3) null))))
> (list->string l)
list->string: contract violation
expected: (listof char?)
given: '(#\a #\b "3")
context...:
C:\Program Files\Racket\collects\racket\private\misc.rkt:87:7
list->string
が必要ですcharsのist、それは文字列を受け入れません。
もう一つは、最初のリストに文字列を変換し、試してみてください。
> (define l (cons #\a (cons #\b (cons (string->list (number->string 123)) null))))
> (list->string l)
list->string: contract violation
expected: (listof char?)
given: '(#\a #\b (#\3))
context...:
C:\Program Files\Racket\collects\racket\private\misc.rkt:87:7
それはどちらかサブリストを受け付けません。これを文字列"ab3"
に変換するにはどうすればよいですか?
あなたの本当の問題があると思われる、私は#\ 3' 'のような文字に3''のように整数に変換しますか。 'integer-> char'は3番目のASCII文字を取るので、それは正しい関数ではありません。あなたが望むのは 'number-> string'のようなものでしょうか?あなたの整数はいつも[0,9]以内ですか? –
申し訳ありませんでしたが、私は文字列に数値、ASCIIコードに数字ではなく数字を10以上にすることを望んでいます。 – fluter
文字通りすべての文字を文字列に変換してから'list-> string'の代わりに' string-append'を使います。 –