2016-10-18 8 views
1

Я пишу функцию-заменитель, которая потребляет строку, символ цели и символ замены . Функция создает новую строку, которая идентична потребляемой строке со всеми вхождениями целевого символа (если таковая имеется) заменена символом замены . Например, (string-replace "word" #\o #\y) ⇒ "wyrd"Ошибка при сборке в функции замены строки?

Примечание: я cannnot использовать любые встроенные в другие строковые функции, чем string->list и list->string

Мой код выглядит

(define(list-replace input-list from-char to-char) 
    (string-replace input-list from-char to-char)) 

(define(string-replace input-string from-char to-char) 
    (list->string(string-replace(string->list input-string) from-char to-char))) 

Для проверки я вхожу (string-replace "word" #\o #\y) Я получаю error string->list: expects a string, given (cons #\w (cons #\o (cons #\r (cons #\d empty))))

Может кто-нибудь помочь мне в этом коде, чтобы заставить его работать?

+0

Пожалуйста, измените название вопроса на что-нибудь более наглядное. Он должен объяснить возникшую у вас проблему или вопрос, который вы зададите, таким образом, чтобы иметь смысл для будущего читателя, который видит его в результатах поиска. * Ракетка * доступна из тега, который вы использовали, и * начальная ошибка? * Абсолютно бессмысленна. –

+0

ОК сделано отредактировано. Извините! – kaminey

ответ

0

Также можно использовать 'for/list' для создания измененного списка (из строки ввода, преобразованной в список). Измененный список затем может быть преобразован в модифицированную строку:

(define (string-replace input-string from-char to-char) 
    (list->string 
    (for/list ((item (string->list input-string))) 
    (if (equal? item from-char) 
     to-char 
     item)))) 

(string-replace "word" #\o #\y) 
"wyrd" 

 Смежные вопросы

  • Нет связанных вопросов^_^