Text anders darstellen  GELÖST

Anwenderaustausch zur PhraseExpress Makroprogrammierung
Post Reply
Flogisch
Posts: 16
Joined: 19 Jul 17, 06:59

Text anders darstellen  GELÖST

Post by Flogisch » 22 Feb 20, 09:51

Hallo Leute,

ich habe es nun schon einige male selbst versucht, jedoch klappt es irgendwie nicht immer richtig. Ist es möglich, so einen Text z.b:

Code: Select all

1	16	0116	06:11	ABC-S	DEF	09:13	GHIJ-S		Platzhalter
16	21	1621	10:35	JKL	MNO	13:15	PQR	STU	Platzhalter
So zu entwurschteln, dass er jetzt am Anfang, wo sich nur die 1 befindet, eine 0 zu platzieren und die restlichen Informationen raussucht automatisch. Das Ergebnis sollte dann ungefähr so aussehen..:

------------------------------------------------------------------------------------
01/16
06:11 Uhr ABC-S → DEF
09:13 Uhr GHIJ-S
------------------------------------------------------------------------------------
16/21
10:35 Uhr JKL → MNO
13:15 Uhr PQR → STU
------------------------------------------------------------------------------------

Das er es dann automatisch macht. Irgendwie ist das sehr umständlich mit ab zeichen X 2 zeichen oder so. Das klappt manchmal auch gar nicht irgendwie. Würde mich über eine Antwort freuen. LG

Peter Stotz
PhraseExpress Expert
Posts: 914
Joined: 27 Feb 08, 15:07

Post by Peter Stotz » 28 Feb 20, 09:57

@Flogisch
das ist auch ein wenig 'friggelich' - was genau wurde denn schon ausprobiert?

Jede umzuschreibende Zeile besteht offenbar aus tabulatorgetrennten Zeilenabschnitten,
von denen die ersten 9 Zeilenabschnitte bearbeitet werden müssen - Beispiel:

Code: Select all

16	21	1621	10:35	JKL	MNO	13:15	PQR	STU	Platzhalter
Ablaufvorschlag für ein Makroprogramm zur Textumformung anhand des Beispiels):

>█ Zeile aus Markierung (Zwischenablage) entnehmen
Abschnitt
# ({#asc 9} für Tabulator, {#asc 13} für Zeilenwechsel, → für Pfeilsymbol)
1 16 entfernen
__Zeile kürzen
2 21 entfernen
__Zeile kürzen
3 1621 zu 16/21{#asc 13}
__Zeile kürzen
4 10:35 zu 10:35_Uhr{#asc 9}
__Zeile kürzen
5 JKL zu JKL{#asc 9}
__Zeile kürzen
6 MNO zu _→_MNO{#asc 13}
__Zeile kürzen
7 13:15 zu 13:15_Uhr{#asc 9}
__Zeile kürzen
8 PQR als PQR übernehmen
__Zeile kürzen
9 STU zu _→_STU

Markierung (Zwischenablage) um 1 Zeile kürzen - Weiter mit der nächsten Zeile bei >█

Peter Stotz
Windows 10 Home - PhraseExpress v14.0.177

Peter Stotz
PhraseExpress Expert
Posts: 914
Joined: 27 Feb 08, 15:07

Post by Peter Stotz » 06 Mar 20, 18:14

@Flogisch
Probiere dieses Makroprogramm einmal aus:

Code: Select all

(* 20200306 • Textumformung 
*){#setclipboard}{#clipboard -copy}{#setclipboard {#trim {#insertclipboard}}{#asc 13}}(*
  Markierung zeilenweise abarbeiten
*){#loop (*
  Zeile mit tabulatorgetrennten Zeilenabschnitten aus der Markierung entnehmen
*){#settemp -name ##Zeile -content {#substr {#insertclipboard} -from 1 -count {#pos {#insertclipboard} -substr {#asc 13}}}}(*
  Trennstrich ausgeben
*){#loop - -count 50}
(*
  Zeilenabschnitt 1 entfernen
*){#settemp -name ##Zeile -content {#trim {#regexget -text {#gettemp ##Zeile} -expr (?-s)\h*\t.*}}}(*
  Zeilenabschnitt 2 entfernen
*){#settemp -name ##Zeile -content {#trim {#regexget -text {#gettemp ##Zeile} -expr (?-s)\h*\t.*}}}(*
  Zeilenabschnitt 3 umformen von hhmm zu hh/mm{#asc 13}
*){#substr {#gettemp ##Zeile} -from 1 -count 2}/{#substr {#gettemp ##Zeile} -from 3 -count 2}(*
  Zeilenabschnitt 3 entfernen
*){#settemp -name ##Zeile -content {#trim {#regexget -text {#gettemp ##Zeile} -expr (?-s)\h*\t.*}}}
(* 
  Zeilenabschnitt 4 umformen von: hh:mm zu: hh:mm_Uhr→
*){#substr {#gettemp ##Zeile} -from 1 -count 5} Uhr{#asc 9}(*
  Zeilenabschnitt 4 entfernen
*){#settemp -name ##Zeile -content {#trim {#regexget -text {#gettemp ##Zeile} -expr (?-s)\h*\t.*}}}(*
  Zeilenabschnitt 5 anfügen ABC
*){#substr {#gettemp ##Zeile} -from 1 -count {#pos {#gettemp ##Zeile} -substr {#asc 9}}}(*
  Zeilenabschnitt 5 entfernen
*){#settemp -name ##Zeile -content {#trim {#regexget -text {#gettemp ##Zeile} -expr (?-s)\h*\t.*}}}(*
  Zeilenabschnitt 6 anfügen  → DEF<crlf>
*)→ {#substr {#gettemp ##Zeile} -from 1 -count {#pos {#gettemp ##Zeile} -substr {#asc 9}}}{#asc 13}(*
  Zeilenabschnitt 6 entfernen
*){#settemp -name ##Zeile -content {#trim {#regexget -text {#gettemp ##Zeile} -expr (?-s)\h*\t.*}}}(*
  Zeilenabschnitt 7 umformen von: hh:mm zu: hh:mm_Uhr→
*){#substr {#gettemp ##Zeile} -from 1 -count {#calc {#pos {#gettemp ##Zeile} -substr {#asc 9}}-1 -round 0}} Uhr{#asc 9}(*
  Zeilenabschnitt 7 entfernen
*){#settemp -name ##Zeile -content {#trim {#regexget -text {#gettemp ##Zeile} -expr (?-s)\h*\t.*}}}(*
  Zeilenabschnitt 8 GHI anfügen
*){#substr {#gettemp ##Zeile} -from 1 -count {#calc {#pos {#gettemp ##Zeile} -substr {#asc 9}}-1 -round 0}}{#asc 9}(*
  Zeilenabschnitt 8 entfernen
*){#settemp -name ##Zeile -content {#trim {#regexget -text {#gettemp ##Zeile} -expr (?-s)\h*\t.*}}}(*
  Zeilenabschnitt 9 anfügen →JKL
*){#check -text {#substr {#gettemp ##Zeile} -from 1 -count {#calc {#pos {#gettemp ##Zeile} -substr {#asc 9}}-1 -round 0}} -case !=  -output → {#substr {#gettemp ##Zeile} -from 1 -count {#calc {#pos {#gettemp ##Zeile} -substr {#asc 9}}-1 -round 0}} -else}
(*
  Aktuelle Zeile aus der Markierung entfernen
*){#setclipboard {#substr {#insertclipboard} -from {#calc 1+{#pos {#insertclipboard} -substr {#asc 13}} -round 0} -count }}(*
   Markierung Zeilenweise abarbeiten
*) -count {#length {#regexget -text {#insertclipboard} -expr \R -findall -delim }}}(*
  Abschließender Trennstrich
*){#loop - -count 50}
Der Code und die verwendeten RegEx sind vermutlich noch optimierbar, aber erstmal funktioniert's ...

Peter Stotz
Windows 10 - PhraseExpress v14.0.177

Flogisch
Posts: 16
Joined: 19 Jul 17, 06:59

Post by Flogisch » 16 Mar 20, 08:42

Danke für die Hilfe, habe es hinbekommen :)
Ps. Sorry für die späte Rückmeldung

Liebe Grüße,
Flo

Post Reply