2017-10-13 5 views
-1

Je peux diviser une entrée en fonction des espaces, mais j'ai besoin de sauvegarder chacune des sous-chaînes générées en tant qu'éléments d'un vecteur pour pouvoir accéder à chacune d'entre elles et vérifier si l'information dans chacun est correcte. J'ai ceci: (définir VEC (vecteur)) (vecteur-append (entrée string-split) VEC) (affichage VEC)Raquette: Comment séparer une chaîne et enregistrer des sous-chaînes dans un vecteur

; (entrée est le nom de ma variable qu'un utilisateur entre dans un texte -field%)

Mais il me donne une erreur qui dit: vecteur-append: violation du contrat attendu: vecteur? donné: « ("fdsnmf" "ifnjin" "ifnuib") Position argument : 1er autres arguments ...:

Répondre

0

vector-append est utilisé pour ajouter deux vecteurs, et non un vecteur et une liste. Pour créer le vecteur contenant la liste des chaînes d'entrée, vous pouvez faire:

(define vec (apply vector (string-split input))) 

Par exemple,

(define input "this is random text") 
(define vec (apply vector (string-split input))) 

(display vec) 
=> #(this is random text) 
(vector-ref vec 2) 
=> "random" 

Vous pouvez également utiliser list->vector:

(define vec (list->vector (string-split input))) 

(display vec) 
=> #(this is random text)