Aller au contenu

WCmatch à virgules


Tramber

Messages recommandés

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

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

 

 

Lien vers le commentaire
Partager sur d’autres sites

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

 

Lien vers le commentaire
Partager sur d’autres sites

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é