Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi nur bestimmten teil eines Strings auslesen. (https://www.delphipraxis.net/61885-nur-bestimmten-teil-eines-strings-auslesen.html)

Christian18 27. Jan 2006 15:34


nur bestimmten teil eines Strings auslesen.
 
Hallo,

wie kann ich aus einen string nur einen bestimmten bereich auslesen???

Bsp.:

hier_ist_der_string{234234}und_so_gehts_weiter

jetzt will ich nur das was in geschweiften klammern steht haben. wie kann ich das machen???

also ich will nur diesen teil haben: 234234

MFG Christian18

dahead 27. Jan 2006 15:37

Re: nur bestimmten teil eines Strings auslesen.
 
such mit dem befehl pos nach der ersten klammer. dann merkst du dir die position und suchst wieder mit pos die nächste klammer.

mit diesen zwei zurückgegebenen werten kannst du via copy den rest abschneiden. zu jedem befehl gibts hier im forum oder in der delphi hilfe infos.

edit: hab dir mal ein beispiel gemacht wie ich das meine.

Delphi-Quellcode:
var
  I, F: Integer;
begin

  // erste Klammer suchen.
  I := Pos('{', E_Str.Text);
  // Wenn gefunden weiter
  if I > 0 then
    begin
      // nächste Klammer suchen (dazu den String ab der Position I bis zum Ende
      // verwenden.
      F := Pos('}', Copy(E_Str.Text, I, Length(E_Str.Text)));
      // Wenn gefunden weiter
      if F > 0 then
        begin
          // Ausgabe von Start I bis Ende F
          // + 1 um das { zu überspringen und - 2 um das } wegzulassen
          E_Output.Text := Copy(E_Str.Text, I + 1, F - 2);
        end;
    end;

Bernhard Geyer 27. Jan 2006 15:39

Re: nur bestimmten teil eines Strings auslesen.
 
Oder falls komplizierter ist: TRegExpr-Komponente

Christian18 27. Jan 2006 15:46

Re: nur bestimmten teil eines Strings auslesen.
 
Hallo,

und was mache ich, wenn der string so aussieht!!!

hier_ist_der_string{234234}und_so_gehts_weiterhier _ist_der_string{234234}und_so_gehts_weiter

also, wenn ich 2 klammern drinn habe???

dann hilft mir pos doch auch nicht weiter oder???

ich habe es mit pos auch schon mal versucht

hier:
Delphi-Quellcode:
  var m1, m2 : Integer;
      r : String;
begin
  m1:=Pos('{', s);
  m2:=Pos('}', s);

  r:=Copy(s, m1, m2 - m1);

  Result:=r;

dahead 27. Jan 2006 15:48

Re: nur bestimmten teil eines Strings auslesen.
 
dann machst du das halt mit einer for oder while schleife.

3_of_8 27. Jan 2006 16:11

Re: nur bestimmten teil eines Strings auslesen.
 
Funzt perfekt:

Delphi-Quellcode:
function GetBracketContent(str: String): TStringList;
begin
result:=TStringList.create;
while pos('{',str)>0 do
begin
result.add(copy(str,pos('{',str)+1,pos('}',str)-pos('{',str)-1));
str:=copy(str,pos('}',str)+1,length(str)-pos('}',str));
end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 23: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