Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  PTC Creo Elements/Programmierung
  STRING in Einzelteile Zerlegen

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 Creo
Autor Thema:  STRING in Einzelteile Zerlegen (1187 / mal gelesen)
Seele
Mitglied
Konstrukteur


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

Beiträge: 364
Registriert: 11.06.2003

Intel(R) Xeon(R) W-2245 CPU @ 3,90 GHz, 64GB RAM
NVidia Quadro RTX A4000
Win10-64Bit
Elements/Direct v20.5.1.0
PartLibrary, Surfacing, 3D-PDF,
3D-Access, Unigraphics-Schnittstelle

erstellt am: 02. Jan. 2017 19: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

Hallo, ...

erst mal wünsche ich allen hier ein gesundes, glückliches und zufriedenes 2017 !!!

ich hab ein Problem mit dem zerlegen eines Strings: (halt wieder schlechte LISP-Kenntnisse)

angenommen STRING sieht so aus:

(setq *GESAMTSTRING* "P236-DS-FP-Schieberführung-Schieber-01-K01")

Gesamtlänge des STRINGs erhalte ich so: (length *GESAMTSTRING*)=> funktioniert schon

diesen möchte ich zerlegen in seine Einzelteile wie folgt:

"P236" => immer die ersten 4 Zeichen => erhalte ich durch (subseq *GESAMTSTRING* 0 4) => funktioniert schon

"DS-FP" => wäre immer Text zwischen dem 1. "-" und dem 3. "-" Länge kann unterschiedlich sein => keine Ahnung wie ich das mache.

"K01" => Text nach dem letzten "-" aber nicht immer vorhanden also prüfen ob dann genau 3 Zeichen folgen und das erste davon ein "K" ist, dann auslesen sonst nil als Ausgabe => keine Ahnung wie ich das mache.

"Schieberführung-Schieber-01" => Text nach dem 3. "-" bis zum Schluß es sei denn es hängt "-K.." dran, dann nur bis dahin. => keine Ahnung wie ich das mache.

Vielen Dank im Vorraus für jede Hilfe, ...

Gruß Wolfgang 

------------------
alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein. 

Werden wir es schaffen? Ja wir schaffen das !!! :-)

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

Walter Geppert
Moderator
Frank und Frei




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

Beiträge: 2143
Registriert: 12.12.2000

Konstruktion von Sondermaschinen, Montageautomaten, Meß- und Prüfeinrichtungen, Vorrichtungen und Produktentwicklung mit Creo Elements/Direct Modeling 20.4, AdvancedDesign, Surfacing, Simulate, SolidPower, ModelManager auf
HP ZBook 17 G4, Windows 10 Pro 64

erstellt am: 02. Jan. 2017 19: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 Seele 10 Unities + Antwort hilfreich

Im konkreten Fall wäre
Code:
(setf mytextlist (sd-string-split  *GESAMTSTRING* "-"))
ein Ansatz.
Dann kannst du die einzelnen Textbausteine mit
Code:
(nth index mytextlist)
verarbeiten

------------------
meine LISP-Makros sind auf osd.cad.de Disclaimer
Grüße aus Wien

Walter

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

Seele
Mitglied
Konstrukteur


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

Beiträge: 364
Registriert: 11.06.2003

erstellt am: 03. Jan. 2017 20:42    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

Danke für die Antwort, ...

habe in der Zwischenzeit etwas nachgesforscht und das Problem wie folgt gelöst,
falls irgendwer auch mal einen STRING zerlegen möchte, ....

(setq *GESAMTSTRING* "P236-DS-FP-Schieberführung-Schieber-01-K01")

(setq STRICHSUCH nil) (setq STRICHSUCH1 nil) (setq STRICHSUCH2 nil) (setq STRICHSUCH3 nil) (setq STRICHSUCH4 nil)
(setq Bezeichnung nil) (setq Einbauort nil) (setq Positionsnummer nil) (setq Korrekturnummer nil)

(setq STRICHSUCH (search "-" *GESAMTSTRING* :start2 0))
(if (equal STRICHSUCH nil)
(progn () );endprogn
(progn (setq Positionsnummer (format nil "~A" (subseq *GESAMTSTRING* 0 STRICHSUCH))) ;; Positionsnummer
(setq STRICHSUCH1 STRICHSUCH) ; Position erster STRICH
(setq STRICHSUCH (search "-" *GESAMTSTRING* :start2 (+ STRICHSUCH 1))) ; Position zweiter STRICH
(if (equal STRICHSUCH nil)
(progn () );endprogn
(progn
(setq STRICHSUCH2 STRICHSUCH) ; Position zweiter STRICH
(setq STRICHSUCH (search "-" *GESAMTSTRING* :start2 (+ STRICHSUCH 1))) ; Position dritter STRICH
(if (equal STRICHSUCH nil)
(progn () );endprogn
(progn
(setq STRICHSUCH3 STRICHSUCH) ; Position dritter STRICH
(setq Einbauort (format nil "~A" (subseq *GESAMTSTRING* (+ STRICHSUCH1 1) STRICHSUCH3))) ;; Einbauort
(setq Bezeichnung (format nil "~A" (subseq *GESAMTSTRING* (+ STRICHSUCH3 1) (length (sd-inq-obj-basename the-part)))))
);endprogn
);endif
);endprogn
);endif
);endprogn
);endif

(setq STRICHSUCH4 (search "-" Bezeichnung :from-end t))
(if (equal STRICHSUCH4 nil)
(progn ());progn
(progn
(if (equal (subseq Bezeichnung (+ STRICHSUCH4 1) (+ STRICHSUCH4 2)) "K")
(progn
(if (= (- (length Bezeichnung) STRICHSUCH4) 4)
(progn
(setq Korrekturnummer (format nil "~A" (subseq Bezeichnung (+ STRICHSUCH4 1) (length Bezeichnung)))) ;; Korrekturnummer
(setq Bezeichnung (format nil "~A" (subseq Bezeichnung 0 STRICHSUCH4))) ;; Artikelname
);progn
) ; endif
) ;progn
) ; endif
);progn
); endif

(if (equal Korrekturnummer nil)
(progn (setq Korrekturnummer "K00") );progn
);endif


Vielen Dank für die Hilfe, ...

Gruß Wolfgang

------------------
alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein. 

Werden wir es schaffen? Ja wir schaffen das !!! :-)

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