Aller au contenu

Messages recommandés

Posté(e)

Bonjour à Toutes et à Tous

 

je suis confronté à un souci avec la fonction WCMATCH

 

dans l'aide il est dit :

 

(setq matchme "this is a string - test1 test2 the end")

 

The following code checks whether or not matchme begins with the four characters "this":

(wcmatch matchme "this*")T

je suis d'accord

++++++++++++++++++++++++++++++++++++++++++

The following code illustrates the use of brackets in the pattern.

In this case, wcmatch returns T if matchme contains "test4", "test5", "test6" (4-6),

or "test9" (note the use of the * character):

(wcmatch matchme "*test[4-69]*")

nil

je suis d'accord

++++++++++++++++++++++++++++++++++++++++++

However,

(wcmatch matchme "*test[4-61]*")

T

returns true because the string contains "test1".

je ne suis plus d'accord chez moi cette syntaxe renvoie nil

++++++++++++++++++++++++++++++++++++++++++

ailleurs, toujours dans l'aide il est dit :

If any of the three pattern conditions is met, wcmatch returns T:

(wcmatch "Name" "???,~*m*,N*")

T

je ne suis plus d'accord chez moi cette syntaxe renvoie nil

++++++++++++++++++++++++++++++++++++++++++

est-il possible que le système 64 bits y soit pour quelque chose ?

 

si quelqu'un pouvait me montrer des exemples

j'ai tellement de mal à traduire l'aide que je patine avec cette commande.

 

merci d'avance à celles et à ceux qui prendront du temps pour me dépatouiller.

Posté(e)

Salut,

 

Je n'ai pas ce problème.

J'ai bien les résultats escomptés sur AutoCAD 2011 et AutoCAD MEP 2012 64 bits.

 

Tu trouveras des indications en français sur les caractères génériques dans l'aide :

Annotation de dessins > Notes et étiquettes > Modification du texte > Recherche et remplacement de texte.

 

À part ça, il faut considérer la virgule séparant plusieurs expressions comme un OU logique : si une des expressions retourne T l'expression globale retourne T.

 

(wcmatch "Name" "???") => nil

(wcmatch "Name" "~*m*") => nil

(wcmatch "Name" "N*") => T

(wcmatch "Name" "???,~*m*,N*") => T

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Bonsoir,

 

j'ai tellement de mal à traduire l'aide que je patine avec cette commande.

 

 

wcmatch

 

Compare une chaîne avec un modèle comportant des caractères génériques.

 

(wcmatch chaîne modèle)

 

La fonction wcmatch compare la chaîne avec le modèle pour voir s'ils correspondent. Dans ce cas, T est renvoyé ; sinon, nil est renvoyé. Les arguments chaîne et modèle peuvent être une chaîne entre guillemets ou une variable. Le modèle peut utiliser les caractères génériques indiqués dans le tableau ci-dessous. Seuls les 500 premiers caractères (environ) de la chaîne sont comparés au modèle (les suivants sont ignorés).

 

Caractères génériques

# (dièse) - Correspond à une valeur numérique unique.

@ (at) - Correspond à un caractère alphabétique unique.

. (point) - Correspond à un caractère non alphanumérique unique.

* (astérisque) - Correspond à une séquence de caractères (chaîne vide incluse). Peut être placé n'importe où dans le modèle (début, milieu ou fin).

? (point d'interrogation)- Correspond à un caractère unique.

~ (tilde) - Placé en début de modèle, recherche tout sauf le modèle except

[...] - Correspond à un des caractères spécifiés

[~...] - Recherche un caractère unique (not spécifié).

- (tiret) - Spécifie une fourchette pour un caractère unique (entre crochets).

, (virgule) - Sépare deux modèles.

` (apostrophe inversée) - Désactive le mode de caractères spéciaux (lit le caractère suivant littéralement)

 

 

(wcmatch "Name" "N*")     ; renvoie  T

 

Vérifie que la chaîne Name commence par le caractère N. Vous pouvez utiliser des virgules dans un modèle pour entrer plusieurs conditions. Cet exemple exécute trois comparaisons:

 

(wcmatch "Name" "???,~*m*,N*")   ; renvoie  T

 

La fonction wcmatch renvoie T si l'une des trois conditions est remplie. Dans ce cas, les tests sont : Name a trois caractères (false) ; Name ne contient pas un m (false) et Name commence avec N (true). L'expression renvoie donc T, l'une de ces conditions étant remplie.

 

Une distinction majuscules/minuscules est faite pour cette fonction. Les caractères majuscules et minuscules doivent donc correspondre. Il est possible d'utiliser des variables et des valeurs renvoyées par des fonctions AutoLISP dans les arguments chaîne et modèle.

 

Pour tester un caractère générique dans une chaîne, vous devez entrer une apostrophe inversée (`) pour désactiver ce caractère. Dans ce cas, le caractère suivant l'apostrophe inversé n'est pas traité comme un caractère générique, mais comparé comme tout autre caractère. Par exemple, pour rechercher une virgule dans la chaîne Name, entrez:

 

(wcmatch "Name" "*`,*")            ; renvoie  nil

 

Remarque: D'autres caractères génériques devant être ajoutés dans les versions ultérieures d'AutoLISP, il est souhaitable de désactiver tous les caractères non alphanumériques afin d'assurer la compatibilité ascendante de la fonction.

 

Les langages de programmation C et AutoLISP interprètent la barre oblique inverse (\) comme un caractère d'échappement. Vous devez donc entrer deux barres obliques inversées (\) pour en afficher une dans une chaîne. Pour rechercher une barre oblique inverse dans l'argument Nom, entrez:

 

(wcmatch "Name" "*`\\*")           ; renvoie  nil

 

Tous les caractères entre crochets ([ . . . ]) sont lus littéralement, il n'est donc pas nécessaire de les désactiver, sauf dans les cas suivants:

 

Le caractère tilde (~) n'est lu littéralement que s'il n'est pas le premier caractère entre crochets (comme pour "[A~BC]") ; sinon, il est assimilé à un caractère de négation et implique que la fonction wcmatch recherche tous les caractères sauf ceux situés après le tilde (comme pour "[~ABC]").

 

Le tiret (-) n'est lu littéralement que s'il est le premier ou le dernier caractère entre crochets (comme pour"[-ABC]" ou "[ABC-]") ou lorsqu'il suit un tilde en début de crochet (comme pour "[~-ABC]"). Sinon, le tiret (-) est utilisé entre crochets pour spécifier une fourchette de valeurs pour un caractère spécifique. La fourchette ne s'applique qu'à des caractères uniques. Ainsi, "STR[1-38]" ne recherche que STR1, STR2, STR3 et "[A-Z]" uniquement des caractères alphabétiques en majuscules.

 

Le crochet droit ("]") est également lu littéralement s'il est le premier caractère entre crochets ou s'il suit un tilde placé en début de crochet (comme pour "[ ]ABC]" ou "[~]ABC]").

 

 

 

(Extrait de l'aide AutoCAD R14)

Si tu as besoin d'exemple concrèt hésite pas, pour le 64 bits, je ne sais pas je fonctionne toujours en 32.

Cordialement Bruno

Apprendre => Prendre => Rendre

Posté(e)

Coucou

 

je vous remercie grandement tous les deux

 

l'aide de (Gile)

m'a permis de trouver la version numérique de l'aide.

 

l'aide de VDH-Bruno

m'a permis de la lire correctement.

 

je reviendrai vers vous un de ces jours car

je ne suis plus bien sûr de ce que j'ai avancé en ce dimanche soir.

 

c'est pas bon de travailler jour et nuit même le week-end !

 

amicalement

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité