Forum:Lisp
Thema:Funktion, die feststellt, ob in einer Zeichenkette ein bestimmtes Zeichen vorkommt
Möchten Sie sich registrieren?
Wer darf antworten? Registrierte Benutzer können Beiträge verfassen.
Hinweise zur Registrierung Sie müssen registriert sein, um Beiträge oder Antworten auf Beiträge schreiben zu können.
Ihr Benutzername:
Ihr Kennwort:   Kennwort vergessen?
Anhang:    Datei(en) anhängen  <?>   Anhänge bearbeiten  <?>
Grafik für den Beitrag:                                                
                                                       
Ihre Antwort:

Fachbegriff
URL
Email
Fett
Kursiv
Durchgestr.
Liste
*
Bild
Zitat
Code

*HTML ist AUS
*UBB-Code ist AN
Smilies Legende
Netiquette

10 20 40

Optionen Smilies in diesem Beitrag deaktivieren.
Signatur anfügen: die Sie bei den Voreinstellungen angegeben haben.

Wenn Sie bereits registriert sind, aber Ihr Kennwort vergessen haben, klicken Sie bitte hier.

Bitte drücken Sie nicht mehrfach auf "Antwort speichern".

*Ist HTML- und/oder UBB-Code aktiviert, dann können Sie HTML und/oder UBB Code in Ihrem Beitrag verwenden.

T H E M A     A N S E H E N
archtools

Beiträge: 666 / 16

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

Zitat:
Original erstellt von Cadibar:
Danke schon mal für die Antwort, aber die Funktion kenne ich leider noch nicht. Geht es auch ohne?

Natürlich wäre WCMATCH die richtige Lösung, und wenn Du es noch nicht kennst, wäre das die passende Gelegenheit, es kennen zu lernen.

Aber die Aufgabe kann trivial auch ohne WCMATCH gelöst werden. Weil wir in Lisp sind und deshalb gerne mit Listen arbeiten, kannst Du ja den String mal in eine Liste von einzelnen Zeichen umwandeln, und dann einfach mit MEMBER gucken, ob es in der Liste vorkommt. Deine Aufgabe hast Du dann auf die einfachere Aufgabe der Umwandlung des Strings in eine Liste von Zeichen reduziert. Und das ist überhaupt der Trick beim funktionalen Programmieren: man bricht ein komplexes Problem in eine Kombination einfacherer Probleme herunter, die man dann mit simplen kleinen Funktionen lösen kann. Idealerweise ist ein komplexes Lisp-Programm nur eine Folge von kurzen, maximal 5-zeiligen Funktionen.

Für's Umwandeln von Strings in Listen gibt's übrigens schonb eine vordefinierte Funktion, die die Liste der ASCII-Codes der einzelnen Zeichen zurück gibt: VL-STRING->LIST. Deine Aufgabe ist also in einer kurzen Zeile lösbar. Wenn z.B. (setq zeichen "B") und (setq zeichenkette "ABC") ist, dann prüfst Du mit
(member (ASCII zeichen) (VL-STRING->LIST zeichenkette))
ob das Zeichen in der Zeichenkette enthalten ist.