PDA

View Full Version : String und Leerzeichen



Squall
21-09-06, 09:02
Hallo,
ich versuche gerade einen String bei dem ich an bestimmten stellen Werte einsetzen muss zu bearbeiten.(mit %scan und %replace kann ich mir die richtige Stelle suchen und dort etwas einfügen)
Ich habe jedoch das Problem das Leerzeichen die ich bei der Instanzierung angeben fehlen.

zb:

Dheader3 80A inz(' A*== Dateiname : +
D Datum : +
D ==')

Was in der Variable steht ist aber:

A*== Dateiname : Datum : ==

Was muss ich tun damit er mir keine Leerzeichen weglässt?

Gruß Martin

Edit: Der erste PHP Code wird komisch dargestellt...Der Sring der instanziert wird ist folgender:
A*== Dateiname : Datum : ==
Dateiname und Datum will ich über mein Programm einfügen. Die Instanzierung geht über 3 Zeilen weil der String insg. 80 Zeichen lang ist. dh von Keywordanfang bis 79 sind meine Zeichen bei Spalte 80 ein "+".

Bratmaxxe
21-09-06, 09:09
Moinsen,

poste mal bitte Deinen Programmcode, normalerweise dürften nicht automatisch irgendwelche Leerzeichen fehlen, sofern Du %replace benutzt...

Gruß
Maxx


Im folgenden Beispiel wird 'ABC' durch 'ZXYDE' ersetzt.:





D Text50 S 50A inz(*Blanks)
D MyString S 10A varying
D NewString S 10A varying
D Position S 5U 0
*---------------------------------------------------------
/free
Text50 = 'ABCxyABCvwABC123ABC50';
Dsply Text50;
MyString = 'ABC';
NewString = 'ZXYDE';
Position = 1;

DoW %Scan(MyString: Text50: Position) <> *Zeros;
Text50 = %Replace(NewString: Text50:
%Scan(MyString: Text50: Position): %Len(MyString));
Dsply Text50;
Enddo;

Dsply Text50;
*INLR = *ON;
/End-Free




oder per SQL


c/EXEC SQL Set :Text50 = Replace(:Text50, :MyString, :NewString)
C/END-EXEC

Squall
21-09-06, 09:13
Mein Programmcode:


DHeader DS
Dheader1 80A inz(' A* ')
Dheader2U6 80A inz(' A*========================+
D ====================================+
D =========')
Dheader3 80A inz(' A*== Dateiname : +
D Datum : +
D ==')
Dheader4 80A inz(' A*==----------------------+
D ------------------------------------+
D -------==')
Dheader5 80A inz(' A*== Autor : +
D +
D ==')
Ddatnam S 10A inz('DateinameA')
Ddate S 20A
Dautor S 40A

C eval pos=%scan(':':header3)
C eval pos=pos+3
C eval header3=%replace(datnam:header3:pos)

Die Beispiele hatte ich mir schon angeschaut und wie gesagt von der Sache her funktioniert das auch ganz gut nur werden mir halt die Leerzeichen "geklaut".

Fuerchau
21-09-06, 10:05
Ein '+' am Ende bedeutet, Fortsetzung in der nächsten Zeile ab dem 1. Zeichen <> Blank.

Ein '-' am Ende entfernt die Leerzeichen der Folgezeile NICHT !

Squall
21-09-06, 11:06
Ein '+' am Ende bedeutet, Fortsetzung in der nächsten Zeile ab dem 1. Zeichen <> Blank.

Ein '-' am Ende entfernt die Leerzeichen der Folgezeile NICHT !

Ah ok vielen Dank!

Gruß Martin