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 ? (https://www.delphipraxis.net/79873-string-parsen.html)

agm65 30. Okt 2006 11:05


String parsen ?
 
guten morgen dp, hat jemand einen vorschlag wie ich am besten solch einen string parse:

>>3<<,>>9<<,>>10<<,>>11<<,>>25<<,>>28<<,>>30<<,>>3 5<<


so dass ich nur noch die zahlen habe ?

3_of_8 30. Okt 2006 11:06

Re: String parsen ?
 
Schau dir mal Delphi-Referenz durchsuchenPosEx und Delphi-Referenz durchsuchenCopy an.

Chris P 30. Okt 2006 11:11

Re: String parsen ?
 
Hi,

durchlaufe den string und suche mit Pos() jeweils nach der Position von '>>' und '<<'
und kopiere dir mit Copy() den Teilstring zwischen '>>' und '<<'.

agm65 30. Okt 2006 11:13

Re: String parsen ?
 
habt ihr da mal nen source bespiel ? wäre echt sau cool

Daniel 30. Okt 2006 11:21

Re: String parsen ?
 
Oder mit regulären Ausdrücken. :-)
Folgender Code zerlegt Dir Deinen String und zupft Dir die Zahlen raus:

Delphi-Quellcode:
procedure TForm33.btn_DoNowClick(Sender: TObject);
var reg : TPerlRegEx;
begin
  Memo1.Clear;

  reg:= TPerlRegEx.Create( NIL );
  TRY
     reg.Subject:= edt_SourceString.Text;
     reg.RegEx:= '([0-9])+';

     if reg.Match then
     begin
       Memo1.Lines.Add( reg.MatchedExpression );
       while reg.MatchAgain do
       begin
         Memo1.Lines.Add( reg.MatchedExpression );
       end;
     end
     else
       Memo1.Lines.Add( 'nichts gefunden' );

  FINALLY
     reg.Free;
  END;
end;

Die Klasse TPersRegEx gibt's hier:
http://www.regular-expressions.info/delphi.html

agm65 30. Okt 2006 11:30

Re: String parsen ?
 
danke dir !

Daniel 30. Okt 2006 11:36

Re: String parsen ?
 
Aber aufpassen: Dieser reguläre Ausdruck zuppelt Dir nur alle Zahlen raus. Ob da wirklich spitze Klammern drum herum sind, interessiert ihn nicht. Wenn Du das auch noch prüfen möchtest, so wird's etwas aufwändiger, weil man dann mit den Sub-Expressions arbeiten müsste und die hab' ich gerade nicht im Kopf.

agm65 30. Okt 2006 11:50

Re: String parsen ?
 
nein, danke ich denke das reicht !

alf.stefan 31. Okt 2006 12:15

Re: String parsen ?
 
Der thread ist zwar schon fast geschlossen aber warum will das parsen niemand mit einem TString objekt machen

etwa so

Delphi-Quellcode:

procedure TForm1.Button1Click(Sender: TObject);
var
   s : string;
begin
   s :='>>3<<,>>9<<,>>10<<,>>11<<,>>25<<,>>28<<,>>30<<,>>35<<';

   memo1.Lines.AddStrings(parse(s));
end;
function parse(s: string):TStringList;
begin
   result := TstringList.Create;
   result.CommaText := s;
end;
das result sieht dann so aus
>>3<<
>>9<<
>>10<<
>>11<<
>>25<<
>>28<<
>>30<<
>>35<<

jetzt müssen nur noch die >> und << eliminiert werden.

Gruß

Stefan

alzaimar 31. Okt 2006 12:44

Re: String parsen ?
 
Zitat:

Zitat von alf.stefan

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
   s : string;
begin
   s :='>>3<<,>>9<<,>>10<<,>>11<<,>>25<<,>>28<<,>>30<<,>>35<<';

   memo1.Lines.AddStrings(parse(s));
end;
function parse(s: string):TStringList;
begin
   result := TstringList.Create;
   result.CommaText := s;
end;

... Nee. Eine Funktion, die ein Objekt liefert, das nie freigegeben wird? :wall:
Wieso nicht einfach
Delphi-Quellcode:
Memo1.Lines.Commatext := s;


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:05 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-2025 by Thomas Breitkreuz