AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

String parsen ?

Ein Thema von agm65 · begonnen am 30. Okt 2006 · letzter Beitrag vom 31. Okt 2006
Antwort Antwort
Benutzerbild von agm65
agm65

Registriert seit: 21. Okt 2003
1.194 Beiträge
 
Delphi 2006 Professional
 
#1

String parsen ?

  Alt 30. Okt 2006, 12:05
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 ?
euer Peter Porka
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: String parsen ?

  Alt 30. Okt 2006, 12:06
Schau dir mal Delphi-Referenz durchsuchenPosEx und Delphi-Referenz durchsuchenCopy an.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Chris P

Registriert seit: 8. Mär 2004
230 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: String parsen ?

  Alt 30. Okt 2006, 12:11
Hi,

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

Registriert seit: 21. Okt 2003
1.194 Beiträge
 
Delphi 2006 Professional
 
#4

Re: String parsen ?

  Alt 30. Okt 2006, 12:13
habt ihr da mal nen source bespiel ? wäre echt sau cool
euer Peter Porka
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: String parsen ?

  Alt 30. Okt 2006, 12:21
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
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von agm65
agm65

Registriert seit: 21. Okt 2003
1.194 Beiträge
 
Delphi 2006 Professional
 
#6

Re: String parsen ?

  Alt 30. Okt 2006, 12:30
danke dir !
euer Peter Porka
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: String parsen ?

  Alt 30. Okt 2006, 12:36
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.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von agm65
agm65

Registriert seit: 21. Okt 2003
1.194 Beiträge
 
Delphi 2006 Professional
 
#8

Re: String parsen ?

  Alt 30. Okt 2006, 12:50
nein, danke ich denke das reicht !
euer Peter Porka
  Mit Zitat antworten Zitat
alf.stefan

Registriert seit: 11. Apr 2003
88 Beiträge
 
Delphi 7 Professional
 
#9

Re: String parsen ?

  Alt 31. Okt 2006, 13:15
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
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: String parsen ?

  Alt 31. Okt 2006, 13:44
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?
Wieso nicht einfach
Memo1.Lines.Commatext := s;
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz