У меня есть список символов и целых чисел, и я пытаюсь преобразовать их в строку.как преобразовать список символов и ints в строку
> (define l (cons #\a (cons #\b (cons 3 null))))
Я хочу преобразовать этот список в строку "ab3"
.
Использование list->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 (integer->char 3) null))))
> (list->string l)
"ab\u0003"
Использование number->string
не работает либо:
> (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
требует, чтобы al 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' для этого не является подходящей функцией, поскольку он принимает третий символ ASCII. То, что вы хотите, это нечто вроде 'number-> string', правильно? Всегда ли ваши целые числа в пределах [0,9]? –
Извините, я не знал об этом, я хочу, чтобы число было строковым, а не номером в ascii char code, а число могло быть больше 10. – fluter
Одна вещь, которую вы можете сделать, - это преобразовать все символы в строки, а затем используйте 'string-append' вместо' list-> string'. –