2016-10-15 2 views
0

Donc, je pratiquais la langue de débutant raquette quand je suis arrivé à cette question. Ecrivez une fonction str-replace qui consomme une chaîne, un caractère cible et un caractère de remplacement . La fonction produit une nouvelle chaîne, identique à la chaîne consommée, toutes les occurrences du caractère cible (le cas échéant) étant remplacées par le caractère de remplacement. Par exemple, (string-replace "word" #\o #\y) ⇒ "wyrd".Dans une raquette, comment remplacer un mot dans une chaîne à l'aide de la fonction string-> list ou list-> string uniquement?

Note: Je ne peux utiliser aucune fonction de chaîne intégrée autre que string->list et list->string.

Alors j'ai commencé avec le code maintenant je suis coincé, comment puis-je utiliser la fonction enveloppe pour ce code jusqu'à maintenant, je n'ai que cette

;; los is list of string  
(define(str-replace los) 
    (+(first los) 
    (first (rest los)) 
    (first (rest (rest los))) 
    (first (rest (rest (rest los)))))) 

Répondre

2

Définition d'une fonction de conversion qui fonctionne sur les listes:

(define (replace-in-list input-list from-char to-char) 
    (if (null? input-list) 
     ... 
     (cons ... 
      (replace-in-list ... from-char to-char)))) 

(Vous devez remplir le ... blanc)

et appeler les uns des autres:

(define (str-replace input-string from-char to-char) 
    (list->string 
    (replace-in-list 
     (string->list input-string) from-char to-char))) 
+0

Remplissez les espaces avec quoi? Je suis confus .... Aussi comment cela fonctionnera-t-il pour le remplacement de la chaîne, pouvez-vous élaborer s'il vous plaît? – Asha

+0

@Kiterunner (1) J'ai renommé la seconde fonction en tant que 'str-replace'. (2) Je ne vous ai pas donné une solution complète, vous devez penser à ce qui se passe dans '...'. Que devrait retourner la première fonction au cas où on lui donnerait une liste vide? que devrait-on faire pour chaque personnage de la liste? Toutes les informations dont vous avez besoin vous attendent quelque part. Voir par exemple https://docs.racket-lang.org/ et https://mitpress.mit.edu/sicp/full-text/book/book.html. – coredump