Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  wcmatch

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  wcmatch (2131 mal gelesen)
romi1
Mitglied
Bautechniker


Sehen Sie sich das Profil von romi1 an!   Senden Sie eine Private Message an romi1  Schreiben Sie einen Gästebucheintrag für romi1

Beiträge: 638
Registriert: 09.02.2006

Xeon E3-1245V2
16GB RAM
Windows 10 Professional 64 bit
AutoCAD 2014

erstellt am: 09. Sep. 2009 08:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo!

Ich möchte mittels wcmatch einen String auf div. Sonderzeichen überprüfen:

(setq string "fj\"28")
(wcmatch string "*[[](){}<>?:"|\/* ]*")

Es soll also auf jene Zeichen, die sich innerhalb der (äußeren) eckigen Klammern befinden überprüft werden. Das klappt aber leider so nicht.

Vielleicht gibt es aber einen anderen, einfacheren Weg - ich möchte einen gegebenen String überprüfen, ob nur Buchstaben, Zahlen und noch einige Zeichen wie _ - + # . vorkommen bzw. diese Zeichen zulassen.

Hat jemand einen Tipp ?

Gruß,
Roman

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 09. Sep. 2009 08:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für romi1 10 Unities + Antwort hilfreich

vielleicht sowas
(defun ENTHAELT-SONDERZEICHEN?(STRING SONDERZEICHENSTRING)
  (> (length(vl-remove-if-not
                '(lambda(X)
                   (member X (vl-string->list SONDERZEICHENSTRING))
                 )                 
                 (vl-string->list STRING)
            )
     )
     0
  )
)
(ENTHAELT-SONDERZEICHEN?  " Alles ok " "*[[](){}<>?:\"|\\/*]*")


läßt du den length-vergleich weg , bekommst du sogar ne Liste mit den enthaltenen Sonderzeichen zurück ....

mit wcmatch auf Sonderzeichen prüfen muss ein ` vorangestellt werden

(wcmatch "N*ame" "*`**") -> T
(wcmatch "Name"  "*`**") -> nil

und noch als Ergänzung:

(defun OHNESONDERZEICHEN(STRING SONDERZEICHENSTRING)
  (setq A (vl-string->list SONDERZEICHENSTRING))
  (apply
    'strcat
    (mapcar
      'chr     
      (vl-remove-if
        '(lambda(X)
          (member X A)
        )                 
        (vl-string->list STRING)
      )
    )   
  )
)
------------------
      - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

wronzky
Ehrenmitglied V.I.P. h.c.
CAD-Dienstleistungen für Architekten



Sehen Sie sich das Profil von wronzky an!   Senden Sie eine Private Message an wronzky  Schreiben Sie einen Gästebucheintrag für wronzky

Beiträge: 2154
Registriert: 02.05.2005

CAD:
AutoCAD 2.6 bis 2014
ADT 2005 - 2014
Arcibem
System:
Windows 2000, XP, NO VISTA
Internet-Startseite:
http://www.archi.de

erstellt am: 09. Sep. 2009 08:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für romi1 10 Unities + Antwort hilfreich

kleine Umstellung, grosse Wirkung:
Code:
(wcmatch string "*[][(){}<>?:\"|\\/* ]*")
liefert das gewünschte Ergebnis. die schliessende Eckige Klammer ] MUSS nämlich am Anfang stehen, sonst wird sie als Ende der "oder"-Funktion angesehen.

Grüsse, Henning

------------------
Henning Jesse
VoxelManufaktur
Computer-Dienstleistungen für Architekten und Ingenieure

  http://www.voxelman.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

romi1
Mitglied
Bautechniker


Sehen Sie sich das Profil von romi1 an!   Senden Sie eine Private Message an romi1  Schreiben Sie einen Gästebucheintrag für romi1

Beiträge: 638
Registriert: 09.02.2006

Xeon E3-1245V2
16GB RAM
Windows 10 Professional 64 bit
AutoCAD 2014

erstellt am: 09. Sep. 2009 09:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

@ Thomas: sicher eine gute Lösung, aber mit den vl-Gschichteln kenn' ich mich leider noch nicht aus ...
@ Henning: genial !

DANKE!

Gruß, Roman

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz