Utiliser String.sub en ocaml

Fermé
miroo4 Messages postés 5 Date d'inscription lundi 24 juin 2013 Statut Membre Dernière intervention 24 juin 2013 - 24 juin 2013 à 14:37
miroo4 Messages postés 5 Date d'inscription lundi 24 juin 2013 Statut Membre Dernière intervention 24 juin 2013 - 24 juin 2013 à 19:03
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?

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
24 juin 2013 à 18:55
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é :

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
1
miroo4 Messages postés 5 Date d'inscription lundi 24 juin 2013 Statut Membre Dernière intervention 24 juin 2013
24 juin 2013 à 19:03
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!
0