Registriert seit: 18. Jul 2003
898 Beiträge
Delphi 6 Professional
|
Zeichenfolge in Strings ersetzen
5. Jul 2004, 16:46
Erstmal: Ich will hier nicht wissen wie ich best. Zeichen in einem String gegen andere ersetzen kann, sondern wie ich logisch dabei vorgehe.
Ich will in einem String z.B. "#MM" mit "07" (Aktueller Monat) oder "#JJJJ" mit "2004" (Jahr). Das ist auch an sich kein Problem.
Ich will aber auch #[M+1] ersetzen. Da soll dann statt "07" "08" stehen (Akt. Monat + 1). Wie kann ich da am besten nach suchen?
Momentan sieht mein Quellcode so aus (Auszug):
Delphi-Quellcode:
function FormatText(OldText:string):string;
var
sText:string;
Year,Month,Day: Word;
KW,Quartal:Integer;
FormatText:string;
begin
sText := OldText;
// Ermittlung Tag, Monat und Jahr
DecodeDate(Date,Year,Month,Day);
// Tag
...
// Jahr
while Pos('#JJJJ',sText) <> 0 do
begin
sText := StringReplace(sText,'#JJJJ',IntToStr(Year),[rfReplaceAll, rfIgnoreCase])
end;
while Pos('#JJ',sText) <> 0 do
begin
sText := StringReplace(sText,'#JJ',Copy(IntToStr(Year),3,2),[rfReplaceAll, rfIgnoreCase])
end;
// Kalenderwoche
while Pos('#KW',sText) <> 0 do
begin
sText := StringReplace(sText,'#KW',IntToStr(WeekOfTheYear(Date)),[rfReplaceAll, rfIgnoreCase])
end;
// Quartal
while Pos('#Q',sText) <> 0 do
begin
case Month of
1..3: sText := StringReplace(sText,'#Q','1',[rfReplaceAll, rfIgnoreCase]);
4..6: sText := StringReplace(sText,'#Q','2',[rfReplaceAll, rfIgnoreCase]);
7..9: sText := StringReplace(sText,'#Q','3',[rfReplaceAll, rfIgnoreCase]);
10..12: sText := StringReplace(sText,'#Q','4',[rfReplaceAll, rfIgnoreCase]);
end;
end;
Result := sText;
end;
Da sind jetzt aber nur die Standardsachen drin ohne "+1"
Der Text:
Zitat:
#M
#MM
#ML
#JJ
#JJJJ
#D
#DD
# DL
#KW
#Q
#[M+1]
Sebastian Ehemals bekannt als General2004
|