Utiliser String.sub en ocaml

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

  1. Modérateur
    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. 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!