Einzelnen Beitrag anzeigen

Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#1

Zeichenfolge in Strings ersetzen

  Alt 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
  Mit Zitat antworten Zitat