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

**URL:** https://dessein-tech.com/t/substr-la-fonction-autolisp-dextraction-de-chaines-de-texte/9702
**Category:** AutoLISP
**Tags:** debutant, lisp, programmation, tuto
**Created:** 2026-01-20T17:27:06Z
**Posts:** 1

## Post 1 by @Patrick — 2026-01-20T17:27:06Z

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:

 ![tutoriel_debutants_autolisp_autocad](https://dessein-tech.com/uploads/default/original/2X/f/f408190a8abcde1757498ebd5d4884096d452268.jpeg)

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

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 **«&nbsp;AutoCAD®&nbsp;»** et que tu veux juste récupérer **«&nbsp;Auto&nbsp;»**.

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

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

### Exemple 2 : «&nbsp;Garde-moi tout le reste !&nbsp;»

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

Disons que tu as un calque nommé **«&nbsp;ARCH-MURS&nbsp;»** et tu veux enlever le préfixe «&nbsp;ARCH-&nbsp;» (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 «&nbsp;vieux sage&nbsp;» : 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 «&nbsp;AutoCAD® 2026&nbsp;».

On compte : "AutoCAD® " (avec l’espace) = 8 caractères. Le «&nbsp;2&nbsp;» 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 «&nbsp;Chaîne de caractères&nbsp;» 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 «&nbsp;Chat&nbsp;» + «&nbsp;Chien&nbsp;».

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

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

_Poll: Poll (view on site)_

:right_arrow: Tous les [tutos AutoLISP](https://go.dessein-tech.com/tutos-autolisp)
