Utiliser String.sub en ocaml
miroo4
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
miroo4 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
miroo4 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
je débute en Ocaml, et en ce moment,j'ecris un petit pgm qui parse les fichiers git,
sachant qu'a chaque fois j'ai besoin d'utiliser let l = String.sub (line) 1 ((String.length (line))-1),
donc je cherche à ecrire une fonction, split_line, qui prend une chaine comme argument et
qui rend un pair du premier charactere et le reste de la chaine. C'est a
dire:
split_line : string -> char * string
Tu l'utiliserais comme:
let (first_char, rest_chars) = split_line "the string" in ...
Apres, je veux faire un match sur first_char pour savoir si j'ai adu
code - ou du code +.
comment je pourrais faire ça?
sachant qu'a chaque fois j'ai besoin d'utiliser let l = String.sub (line) 1 ((String.length (line))-1),
donc je cherche à ecrire une fonction, split_line, qui prend une chaine comme argument et
qui rend un pair du premier charactere et le reste de la chaine. C'est a
dire:
split_line : string -> char * string
Tu l'utiliserais comme:
let (first_char, rest_chars) = split_line "the string" in ...
Apres, je veux faire un match sur first_char pour savoir si j'ai adu
code - ou du code +.
comment je pourrais faire ça?
1 réponse
Le découpage de la chaîne de caractères est assez coûteux, si tu veux juste faire du pattern matching sur le premier caractère, alors inutile de récupérer la deuxième moitié :
Si tu as beaucoup de manipulations à faire sur un string tu devrais l'exploser en liste de caractères, plus simple à gérer. Voir : explode.ml
let f str = match str.[0] with '+' -> "plus" | '-' -> "moins" | _ -> str;;
Si tu as beaucoup de manipulations à faire sur un string tu devrais l'exploser en liste de caractères, plus simple à gérer. Voir : explode.ml
miroo4
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
Oui, j'aurais pu faire ça aussi, mais le problème c'est que j'ai besoin d'une fonction split_string que je vais utiliser ultérieurement dans mon code!