Aller au contenu

Messages recommandés

Posté(e)

Voici une string sur laquelle je fais un WCMATCH

 

"100,215,22,331,1,12" (bon)

"1m0,215,2E,331,,1^p" (pas bon)

 

Je veux vérifier que la chaine ne contient pas d'élément AUTRE que 1234567890, là ca va.

 

Mais quand je veux tester le ",", ca ne marche pas malgré une lecture attentive de la doc.

 

Ici, un exemple de ce qui me semblait le + adapté :

 

(wcmatch "100,215,22,331,1,12" "*[[b]~[/b]0-9]*,[[b]~[/b]',]*)

 

 

 

[Edité le 1/1/2005 par Tramber]

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Bonjour à Toi,

la virgule est un caractère un peu particulier,

puisqu'elle a une signification précise dans AutoCad,

donc il faut la faire précéder d'une apostrophe,

et là, ça va fonctionner

exemple :

(if

(= T (wcmatch ChaineDeTramber "*`,*"))

FaireCeQueVeutTramber

);fin du if

en pensant être dans le sujet

 

comme quoi, il faut apostropher celui qui a du caractère

amicalement

Posté(e)

Ok, apparemment, j'étais parti sur un ' et non une `___ !

 

Ceci explique cela.

 

(wcmatch "100,215,22,331,1,12" "*[~0-9`,]*) fonctionne maintenant.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Tramber,

 

Je ne sais pas si ton problème est résolu. À première vue, j'aurais pensé que tu voulais examiner chaque éléments de la première liste. Sinon que tu n'as pas de valeur vide (double ,,). Pour ce dernier critère :

 

(wcmatch "100,215,22,331,1,12" "*[a-z]*,*[A-Z]*,*`,`,*")

 

Serge

Posté(e)

Mon problème est réglé, merci.

 

C'était que j'utilisait le Quote au lieu de l'Apostrophe !

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Encore moi :-),

 

Je me suis dis que ce serait plus clair comme suit:

 

(setq texte "100,215,22,331,1,12")

(setq invalide "*[a-z]*,*[A-Z]*,*`,`,*")

 

(if (not (wcmatch texte invalide))

(progn

(princ "\nBravo!")

)

(progn

(princ "\nErreur!")

))

 

 

Serge

 

 

Posté(e)

OK, mais avec (wcmatch "100,215,22,331,1,12" "*[~0-9`,]*)

je ne ramasse aucun carctère indésirable type `@]}¤%!/

 

:cool:

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Tramber,

 

Ta condition n'empêche pas les ",,"

Il te faudra alors une deuxième condition comme suit:

 

(setq texte "100,215,22,a,331,1,12")

(setq invalide "*[a-z]*,*[A-Z]*,*`,`,*,")

 

(if (not (or (wcmatch texte "*[~0-9`,]*") (wcmatch texte "*`,`,*")))

(progn

(princ "\nBravo!")

)

(progn

(princ "\nErreur!")

))

 

 

Ou encore ceci (note: tu pourrais évaluer directement intrus au besoin):

(setq texte "100,215,22,331,1,12")

(setq lettres '("#" "@" "." "*" "?" "~" "-" "!" "/" "\\")) ; Ne pas mettre le , dans ce cas-ci

(setq intrus "")

(foreach lettre lettres (setq intrus (strcat intrus ",*`" lettre "*")))

(setq intrus (strcat "*[a-z]*,*[A-Z]*,*`,`,*" "," intrus))

 

(if (not (wcmatch texte intrus))

(progn

(princ "\nBravo!")

)

(progn

(princ "\nErreur!")

))

 

Serge

 

Posté(e)

Exact, je n'ai pas de protection contre les virgules doubles....

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)

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é