Clojure:
Extraction de sous-chaînes
How to:
En Clojure, on utilise subs
pour extraire une sous-chaîne :
(let [phrase "La magie de Clojure"]
(println (subs phrase 3 9))) ; Affiche "magie "
subs
prend la chaîne, le début, et la fin. Facile, non ?
Deep Dive
Historiquement, Clojure hérite des fonctions de Java, donc subs
vient de la classe String de Java. Cependant, contrairement à Java, subs
retourne immédiatement une nouvelle chaîne sans tenir de la chaîne originale. C’est parce que les chaînes en Clojure sont immuables.
Il y a d’autres manières d’obtenir ce qu’on veut. Des expressions régulières avec re-find
et re-seq
, ou même des fonctions de plus haut niveau comme clojure.string/split
. Chaque méthode a sa raison d’être, mais subs
est souvent le plus direct quand on sait exactement où couper.
En ce qui concerne l’implémentation, subs
est efficace car les chaînes en Java, et donc en Clojure, sont stockées en interne dans un tableau de caractères. L’opération de sous-chaîne ne nécessite pas de copier l’ensemble du tableau, juste une référence au tableau original avec un début et une fin modifiés.
See Also
- Clojure
subs
: https://clojuredocs.org/clojure.core/subs - Utiliser les expressions régulières en Clojure : https://clojuredocs.org/clojure.core/re-find
clojure.string
: https://clojure.github.io/clojure/clojure.string-api.html