Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String nach einem Substring herausnehmen (https://www.delphipraxis.net/138366-string-nach-einem-substring-herausnehmen.html)

wayne312 8. Aug 2009 21:44


String nach einem Substring herausnehmen
 
Hey leute,
ich bin noch etwas unerfahren in Delphi und komme grad nicht weiter.
ich habe zb.
Delphi-Quellcode:
string1:=('Dies ist ein String');
und jetz möchte ich das wort nach dem 'ist' kopieren.
Mit der Pos funktion hat es auch erst gut geklappt nur als ich dort einen anderen String einfüge nichtmehr so gut.

Hoffe auf hilfe

SimStar001 8. Aug 2009 21:51

Re: String nach einem Substring herausnehmen
 
also mittels posex die position von 'ist' bestimmen und dann in einer schleife z.b. und dann den string in mehreren schritten bearbeiten:

Delphi-Quellcode:
s := 'das ist mein string';
s := copy(s,posex('ist',s),length(s));
s := copy(s,pos(' ',s) + 1 , length(s));
// nun ist s ==> 'mein string';

wayne312 8. Aug 2009 22:01

Re: String nach einem Substring herausnehmen
 
Vielen Dank SimStar001

Und wie bekomme ich das hin, das er nur 1 wort nimmt? zb. wenn der string länger ist möchte ich ja nicht das komplette ende sondern nur einen teil, ein wort.
Oder so, dass es von dem zeichen " bis zum nächten " geht.

Danke

jaenicke 9. Aug 2009 06:16

Re: String nach einem Substring herausnehmen
 
So könntest du es z.B. machen:
Delphi-Quellcode:
function FindNextWord(const AText, APrevWord: string): string;
var
  CurPos: PChar;
begin
  CurPos := PChar(Integer(PChar(AText) + Pos(APrevWord + ' ', AText) + Length(APrevWord)));
  SetString(Result, CurPos, Pos(' ', CurPos) - 1);
end;
Und dann eben so aufrufen:
Delphi-Quellcode:
FindNextWord('Das ist ein Test!', 'ist')

alzaimar 9. Aug 2009 06:39

Re: String nach einem Substring herausnehmen
 
Vielleicht sollte man die Funktion für einen Anfänger etwas übersichtlicher gestalten und die Sonderfälle (nächstes Wort ab 'Test') absturzsicher berücksichtigen.

jaenicke 9. Aug 2009 07:02

Re: String nach einem Substring herausnehmen
 
Kann man alles machen:
Delphi-Quellcode:
function FindNextWord(const AText, APrevWord: string): string;
var
  CurPos: PChar;
  TempPos: Integer;
begin
  Result := '';
  TempPos := Pos(APrevWord + ' ', AText);
  if TempPos = 0 then
    Exit;
  CurPos := PChar(Integer(PChar(AText) + TempPos + Length(APrevWord)));
    // Beim Zeichen hinter dem gesuchten Wort weitermachen
  TempPos := Pos(' ', CurPos);
  if TempPos = 0 then
    Exit;
  SetString(Result, CurPos, TempPos - 1);
    // Als Ergebnis den Text von der ersten Position bis zum Zeichen vor
    // dem Leerzeichen zurückgeben
end;

alzaimar 9. Aug 2009 07:58

Re: String nach einem Substring herausnehmen
 
Vorbildlich! Danke. :thumb:

wayne312 9. Aug 2009 11:05

Re: String nach einem Substring herausnehmen
 
Danke an alle!


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