Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  String in Liste ersetzen

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:  String in Liste ersetzen (1585 mal gelesen)
JC Wasti
Mitglied
Student


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

Beiträge: 52
Registriert: 10.11.2004

ACADR14
Genius14
ACADM6PP
alles auf WinXP

erstellt am: 30. Okt. 2006 13:26    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,

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?

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

Geos
Mitglied
Vermessungstechniker i.R.


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

Beiträge: 1017
Registriert: 21.09.2001

ACAD Map 2010, Win 7 Pro
eigene Lisp's<P>HW: Core i7 860, 2.8 GHz
3.3 GB, NVIDIA GeForce GTS 250

erstellt am: 30. Okt. 2006 13:33    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 JC Wasti 10 Unities + Antwort hilfreich

(subst) is für Listen - für Text nimm (substr)

------------------
Schöne Grüße
Ernst

Meine Homepage

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

JC Wasti
Mitglied
Student


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

Beiträge: 52
Registriert: 10.11.2004

ACADR14
Genius14
ACADM6PP
alles auf WinXP

erstellt am: 30. Okt. 2006 13:43    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

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!

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

spider_dd
Mitglied



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

Beiträge: 1111
Registriert: 27.11.2003

Win 10Pro
Intel(R) Core(TM) i7-7700
NVIDIA Quadro P1000
ACAD, Civil-3D 2018

erstellt am: 30. Okt. 2006 14:12    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 JC Wasti 10 Unities + Antwort hilfreich

Hallo JC Wasti,

Deine Liste enthält die Werte samt Anführungsstriche, dein subst muss dann so aussehen:

Code:
(subst '"A=" '"A2" obf)

lg
Thomas

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

JC Wasti
Mitglied
Student


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

Beiträge: 52
Registriert: 10.11.2004

ACADR14
Genius14
ACADM6PP
alles auf WinXP

erstellt am: 30. Okt. 2006 14:23    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

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)

lg
Thomas


Hallo 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?

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 30. Okt. 2006 14:23    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 JC Wasti 10 Unities + Antwort hilfreich

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 '("A=") '("A2") (mapcar '(lambda (A) (list A)) obf))))

(defun c:test1  (/)
  (setq obf (list "A0" "A1" "A2" "A3" "A4"))
  (subst "A=" "A2" obf))
 


------------------
viele Grüße

Jörn

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

spider_dd
Mitglied



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

Beiträge: 1111
Registriert: 27.11.2003

Win 10Pro
Intel(R) Core(TM) i7-7700
NVIDIA Quadro P1000
ACAD, Civil-3D 2018

erstellt am: 30. Okt. 2006 14:33    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 JC Wasti 10 Unities + Antwort hilfreich

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?
- wie sieht sie nach dem subst aus?
- gibt es eine Fehlermeldung, wenn ja welche?

lg
Thomas

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

JC Wasti
Mitglied
Student


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

Beiträge: 52
Registriert: 10.11.2004

ACADR14
Genius14
ACADM6PP
alles auf WinXP

erstellt am: 30. Okt. 2006 14:36    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

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 '("A=") '("A2") (mapcar '(lambda (A) (list A)) obf))))

(defun c:test1  (/)
  (setq obf (list "A0" "A1" "A2" "A3" "A4"))
  (subst "A=" "A2" obf))
 



Hallo Jörn,

vielen Dank für deine Antwort. Leider funktionieren deine zwei Funktionen nicht in meinem Listener! (LispWorks)
Bei mir kommt immer die originale Liste zurück!

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

JC Wasti
Mitglied
Student


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

Beiträge: 52
Registriert: 10.11.2004

ACADR14
Genius14
ACADM6PP
alles auf WinXP

erstellt am: 30. Okt. 2006 14:40    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

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 funktionieren!

lg
Thomas


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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 30. Okt. 2006 14:51    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 JC Wasti 10 Unities + Antwort hilfreich

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))

------------------
viele Grüße

Jörn

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

JC Wasti
Mitglied
Student


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

Beiträge: 52
Registriert: 10.11.2004

ACADR14
Genius14
ACADM6PP
alles auf WinXP

erstellt am: 30. Okt. 2006 15:06    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

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!

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

HPW
Mitglied
Holz-Techniker


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

Beiträge: 80
Registriert: 11.01.2005

Dell Precision T3610
Autocad 2016

erstellt am: 01. Nov. 2006 13:59    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 JC Wasti 10 Unities + Antwort hilfreich

>Bitte nur reine Lisp-Funktionen!

Seit wann ist CommonLisp (Lispworks) das 'reine' Lisp?

Ist dies nicht ein Autolisp/VisualLisp Forum?

Hans-Peter

------------------
Hans-Peter

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

clausb
Ehrenmitglied V.I.P. h.c.



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

Beiträge: 2914
Registriert: 20.12.2000

erstellt am: 01. Nov. 2006 17: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 JC Wasti 10 Unities + Antwort hilfreich

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=)

Claus

------------------
OneSpace Designer Modeling FAQ: http://www.clausbrod.de/Osdm/

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



Vermessungstechniker (m/w/d)

Mehr als 1.300 engagierte Mitarbeiter_innen der Stadtwerke Münster und ihrer Tochterunternehmen liefern Energie, Trinkwasser, Glasfaser und Mobilität für das Leben in unserer Stadt und dem Umland. Stadtnetzer_in zu sein, das bedeutet Sicherheit, Arbeitsflexibilität, eine hohe Verbundenheit und das Gefühl, in einem großen Team zu arbeiten. Denn was uns alle vereint: der echte Zusammenhalt ...

Anzeige ansehenWeitere: Ingenieure und technische Berufe
JC Wasti
Mitglied
Student


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

Beiträge: 52
Registriert: 10.11.2004

ACADR14
Genius14
ACADM6PP
alles auf WinXP

erstellt am: 03. Nov. 2006 08:24    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

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.
10U's4u.

Gruß
JC Wasti

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