Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi string parsen (quotes in echte anführungszeichen tauschen) (https://www.delphipraxis.net/121253-string-parsen-quotes-echte-anfuehrungszeichen-tauschen.html)

rd3 24. Sep 2008 16:53


string parsen (quotes in echte anführungszeichen tauschen)
 
Hallo,

mein Problem habe ich schon im Delphi-Forum gepostet.

Hier der Cross-Link: http://www.delphi-forum.de/viewtopic...9b388a36fef9fb

Hoffe, mir hilft jemand weiter, da Parsen nicht mein Ding ist.

Vielen Dank.
rd3

3_of_8 24. Sep 2008 17:07

Re: string parsen (quotes in echte anführungszeichen tausche
 
Tja, kommt drauf an. Wenn du willst, dass verschachtelte Anführungszeichen auch funktionieren, dann geht das nicht. Ansonsten... geh den String durch bis zum ersten ", ersetz es durch ein „, setz dir ein Flag, geh weiter bis zum nächsten ", ersetze es durch ” und setze das Flag zurück. Fertig ist dein Ersetzungsalgorithmus.

TonyR 24. Sep 2008 17:12

Re: string parsen (quotes in echte anführungszeichen tausche
 
... und falls du nicht weißt, wie man das ersetzt:
Delphi-Quellcode:
s[5]:=#0132 //nur ein Bsp. an der Stelle

nahpets 24. Sep 2008 17:14

Re: string parsen (quotes in echte anführungszeichen tausche
 
Hallo,
Delphi-Quellcode:
Function MachMichHochkomma(s : String) : String;
var
    i   : Integer;
begin
  s := s + ' '; // Damit wir am Ende immer ein Blank haben.
  for i := 1 to Length(s) - 1 do begin
    Case s[i] of
      #32..#64 : begin // Die Liste ggfls. anpassen
                   Case s[i + 1] of // Zeichen hinter "Nichtbuchstaben"
                     #34 : s[i + 1] := #132;
                   end;
                 end;
      #65..#90,#97..#122 : begin // Die Liste ggfls. anpassen
                   Case s[i + 1] of // Zeichen hinter "Buchstaben"
                     #34 : s[i + 1] := #148;
                   end;
                 end;
    end;
  end;
  Result := s;
end;
Aufruf:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var
          s : String;
begin
  s := 'Text text "text" text text, text, text ("text") '
     +  'text "text", text. '
     + 'Text text "text" text text, text, text ("text") '
     + 'text "text", text.';
  ShowMessage(MachMichHochkomma(s));
end;
Stephan

PS: Ist nur so hingedaddelt, Feinheiten bitte selbst einbauen und hier zur Verfügung stellen :wink:

Uwe Raabe 24. Sep 2008 20:08

Re: string parsen (quotes in echte anführungszeichen tausche
 
Oder so:

Delphi-Quellcode:
var
  I: Integer;
  ch: char;
begin
  ch := #132;
  for I := 1 to Length(S) do
    if S[I] = #34 then begin
      S[I] := ch;
      ch := chr(132 + 148 - ord(ch));
    end;
end;
Wegen der expliziten Angabe der Zeichencodes funktioniert das aber nicht mehr unter Delphi 2009! Dazu müsste man die Zeichencodes der entsprechenden Unicode-Zeichen kennen.

3_of_8 24. Sep 2008 21:37

Re: string parsen (quotes in echte anführungszeichen tausche
 
charmap hilft: $201D und $201E.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz