2016-10-18 9 views
1

文字列、ターゲット文字、および の置換文字を消費する関数string-replaceを書いています。この関数は、 置換文字で置き換えられたターゲット文字(存在する場合)のすべての出現文字列を含む 文字列と同じ新しい文字列を生成します。例えば、(string-replace "word" #\o #\y) ⇒ "wyrd"文字列置換機能のラケットエラー?

注: 私はstring->list以外の任意の組み込みの文字列関数を使用しcannnotとlist->string

私のコードは私が取得しています (string-replace "word" #\o #\y)を入力して確認するには

(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->list: expects a string, given (cons #\w (cons #\o (cons #\r (cons #\d empty))))

誰かがこのコードで私を助けて動作させることができますか?

+0

あなたの質問のタイトルをよりわかりやすいものに編集してください。検索結果に表示される将来の読者のために意味を持つ方法で質問している、問題があるかどうかを説明する必要があります。 * Racket *はあなたが使ったタグから利用可能です。*初心者のエラー?*はまったく意味がありません。 –

+0

ok done edited.Sorry! – 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"