|
Lisp : String in Liste ersetzen
JC Wasti am 30.10.2006 um 13:26 Uhr (0)
Hallo,Folgendes Problem:In einer Liste mit Strings möchte ich nun einen String durch einen anderen ersetzen.Ich möchte dies nur mit reinen LISP-Funktionen lösen.z.B.:(setq obf (list "A0" "A1" "A2" "A3" "A4"))(subst "A=" "A2" obf)Leider funktioniert die subst-Funktion irgendwie nicht mit Strings!Gibts da nen Zusatz, oder welche Funktion muß ich dafür verwenden?
|
| In das Form Lisp wechseln |
|
Lisp : String in Liste ersetzen
JC Wasti am 30.10.2006 um 13:43 Uhr (0)
Zitat:Original erstellt von Geos:(subst) is für Listen - für Text nimm (substr) Danke Ernst für deine schnelle Antwort.Ich weiß dass "subst" nur für Listen ist.Aber leider geht das mit der Funktion "substr" nicht, denn ich möchte keine AutoLips-Funktion verwenden. Bitte nur reine Lisp-Funktionen!
|
| In das Form Lisp wechseln |
|
Lisp : String in Liste ersetzen
JC Wasti am 03.11.2006 um 08:24 Uhr (0)
Zitat:Original erstellt von clausb:Bei mir tut in Common-Lisp-Dialekten (CLISP, KCL/OneSpace Designer Modeling Lisp) der folgende Code das Gewuenschte:Code:(setq obf (list "A0" "A1" "A2" "A3" "A4"))(substitute "A=" "A2" obf :test #string=)Hi Claus, Danke für deine Antwort.Das geht echt gut und so werd ichs dann auch machen.10Us4u.GrußJC Wasti
|
| In das Form Lisp wechseln |
|
Lisp : String in Liste ersetzen
JC Wasti am 30.10.2006 um 14:23 Uhr (0)
Zitat:Original erstellt von spider_dd:Hallo JC Wasti,Deine Liste enthält die Werte samt Anführungsstriche, dein subst muss dann so aussehen:Code:(subst "A=" "A2" obf)lgThomasHallo Thomas,danke für die Antwort, nur leider funktioniert das mit der Quote auch nicht. Hab ich auch schon ausgetestet!Hast du vielleicht noch ne andere Idee / Lösung?
|
| In das Form Lisp wechseln |
|
Lisp : String in Liste ersetzen
JC Wasti am 30.10.2006 um 15:06 Uhr (0)
Zitat:Original erstellt von joern bosse:Hallo Wasti,na ein Versuch noch ohne subst:Code:(defun c:test2 ( / obf1) (setq obf (list "A0" "A1" "A2" "A3" "A4")) (while obf (if (=(car obf)"A2") (setq obf1 (cons "A=" obf1)) (setq obf1 (cons (car obf) obf1))) (setq obf (cdr obf))) (reverse obf1))Danke Jörn für dein Bemühen.Du hast mich auf ne Idee gebracht. Aber so gehts auch!10Us4U!
|
| In das Form Lisp wechseln |
|
Lisp : String in Liste ersetzen
JC Wasti am 30.10.2006 um 14:40 Uhr (0)
Zitat:Original erstellt von spider_dd:Hallo Wasti,also bei mit klappt beides, mit und ohne (getestet in der Befehlszeile).Mal ein paar Frage:- Deine Variable obf wird bei (setq obf ... ) richtig belegt?Ja die Variable wird richtig belegt!- wie sieht sie nach dem subst aus?nach dem subst sieht sie immer noch so aus wie vorher!- gibt es eine Fehlermeldung, wenn ja welche?Es gibt auch keine Fehlermeldung!Ich erstelle gerade ein eigenes LISP-Programm, also ohne ACAD! Es soll dann unabhängig vom CAD-System fun ...
|
| In das Form Lisp wechseln |
|
Lisp : String in Liste ersetzen
JC Wasti am 30.10.2006 um 14:36 Uhr (0)
Zitat:Original erstellt von joern bosse:Hallo Wasti,ich bin der Meinung, subst funktioniert auch bei nur Strings in Listen. Ich habe mal 2 Beispiele gemacht, und es klappt mit beiden.Beim ersten habe ich die String erst in eine Liste gepackt, dann gesubst, und dann wieder ausgepackt. Die zweite Funktion zeigt aber, das es eigentlich nicht notwendig ist.Rückgabe in beiden Fällen: ("A0" "A1" "A=" "A3" "A4")Code:(defun c:test (/) (setq obf (list "A0" "A1" "A2" "A3" "A4")) (mapcar (lambda (A) (car A)) (subst ...
|
| In das Form Lisp wechseln |