(substr), la fonction AutoLISP d'extraction de chaines de texte

Allez, on se détend ! L’AutoLISP a souvent l’air effrayant avec toutes ses parenthèses, mais promis, la fonction substr est aussi simple que de couper une part de gâteau. :shortcake:

En gros, substr (pour substring ou « sous-chaîne ») sert à dire à AutoCAD® : « Prends ce texte, et découpe-moi un morceau précis à l’intérieur. »

Voici comment ça marche, sans jargon compliqué.

La Recette Magique :scroll:

La fonction a besoin de 3 ingrédients (dont un facultatif) :

  1. Le texte (La phrase complète).

  2. Le départ (À quel caractère on commence à couper ?).

  3. La longueur (Combien de caractères on garde ? Optionnel).

La syntaxe ressemble à ça :

(substr "MonTexte" Départ Longueur)

Exemple 1 : La découpe chirurgicale

Imaginons que tu as le texte « AutoCAD® » et que tu veux juste récupérer « Auto ».

On commence à la 1ère lettre, et on en prend 4.

(substr "AutoCAD" 1 4)
;; Résultat : "Auto"

Exemple 2 : « Garde-moi tout le reste ! »

C’est l’astuce cool. Si tu ne donnes pas la longueur (le 3ème ingrédient), substr comprend : « Commence ici et prends tout jusqu’à la fin ».

Disons que tu as un calque nommé « ARCH-MURS » et tu veux enlever le préfixe « ARCH- » (qui fait 5 caractères). On commence donc au 6ème caractère.

(substr "ARCH-MURS" 6)
;; Résultat : "MURS"

:warning: Le Piège à éviter (Attention !)

Dans beaucoup de langages de programmation, on commence à compter à 0.

Mais AutoLISP est un « vieux sage » : il compte comme les humains, en commençant à 1.

  • "A" est le caractère n°1.

  • "u" est le caractère n°2.

Si tu demandes de commencer à 0, AutoCAD® va te regarder de travers (et te renvoyer une erreur).

Petit exercice pratique

Tu veux extraire l’année de ta version « AutoCAD® 2026 ».

On compte : "AutoCAD® " (avec l’espace) = 8 caractères. Le « 2 » de 2026 est donc le 9ème.

(setq maVersion "AutoCAD 2026")
(setq annee (substr maVersion 9))
;; La variable 'annee' contient maintenant "2026"

En programmation, une String (ou « Chaîne de caractères » en français), c’est tout simplement du texte.

Pourquoi ce nom bizarre ? :thread:

Imagine un collier de perles.

  • Chaque perle est une lettre, un chiffre ou un symbole.

  • Le fil (string en anglais) relie toutes ces perles pour en faire un seul objet.

Pour l’ordinateur, "Bonjour" n’est pas un mot magique, c’est une suite logique : B puis o puis n… attachés ensemble.

La Règle d’Or : Les Guillemets "

C’est le secret pour qu’AutoCAD® ne s’embrouille pas.

  • Sans guillemets, AutoCAD® croit que c’est une commande ou une variable (ex: LIGNE).

  • Avec guillemets, AutoCAD® comprend que c’est juste du texte inerte (ex: "LIGNE").

Le piège classique (Le faux jumeau)

C’est là que les débutants se font avoir :

  • 2026 : C’est un nombre. Tu peux faire des maths avec (2026 + 1 = 2027).

  • "2026" : C’est une string (du texte). Pour l’ordinateur, c’est juste un dessin de chiffres. Tu ne peux pas l’additionner, tout comme tu ne peux pas additionner « Chat » + « Chien ».

En résumé : Si c’est entre guillemets, c’est une String !

C’est tout ! Tu sais maintenant découper du texte.

  • Utile
  • Peut mieux faire
  • Inutile
0 votant

:right_arrow: Tous les tutos AutoLISP