AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Wort in einem Satz vor einem bestimmten Wort suchen
Thema durchsuchen
Ansicht
Themen-Optionen

Wort in einem Satz vor einem bestimmten Wort suchen

Ein Thema von heri · begonnen am 3. Nov 2006 · letzter Beitrag vom 3. Nov 2006
Antwort Antwort
heri

Registriert seit: 20. Mär 2006
81 Beiträge
 
Delphi 2006 Enterprise
 
#1

Wort in einem Satz vor einem bestimmten Wort suchen

  Alt 3. Nov 2006, 07:48
Wie kann ich am schnellsten ein Wort in einem Satz vor einem bestimmten Wort suchen

mein Code funktioniert zwar - kommt mir aber etwas mühsam vor?
Delphi-Quellcode:
function WordBefore(const S, Word: String): String;
var
i: Integer;
sBuf: String;
begin
//S: Das ist ein Wort
//Word: Wort
//Result: ein

  i := pos(Word, S);
  if i>0 then
  begin

    sBuf := Trim(copy(S,1,i-1)); //Das ist ein
    for i := Length(sBuf) downto 0 do
    begin

      if sBuf[i]<>' then
         Result := sBuf[i]+Result
      else
         exit;

    end;

  end;

end;
Hat jemand eine "bessere" Idee?
Thx
  Mit Zitat antworten Zitat
bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#2

Re: Wort in einem Satz vor einem bestimmten Wort suchen

  Alt 3. Nov 2006, 07:53
was ist daran mühsam? einziges problem ist, dass es nicht funktionieren wird. aber sonst okay, vielleicht noch die for-schleife durch repeat ersetzen um das exit zu vermeiden. (wobei da besser break statt exit stehen sollte)
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Wort in einem Satz vor einem bestimmten Wort suchen

  Alt 3. Nov 2006, 08:11
Du solltest noch prüfen, ob das gefundene Wort auch wirklich nur das Wort ist:

"In seinem Wortschatz kommt das Wort nicht vor"

Dies würde "seinem" als ergebnis liefern und nicht "das".
Ralf Kaiser
  Mit Zitat antworten Zitat
heri

Registriert seit: 20. Mär 2006
81 Beiträge
 
Delphi 2006 Enterprise
 
#4

Re: Wort in einem Satz vor einem bestimmten Wort suchen

  Alt 3. Nov 2006, 09:08
Thx für die beiden Inputs - habs auf folgenden Code geändert
Delphi-Quellcode:
function WordBefore(const S, Word: String): String;
var
i: Integer;
sBuf: String;
begin
//S: Das ist ein Wort
//Word: Wort
//Result: ein

  i := pos(' '+Word+' ', S+' ');
  if i>0 then
  begin

    sBuf := Trim(copy(S,1,i-1));
    repeat
       Result := sBuf[i]+Result;
       dec(i);
    until (i=0) OR (sBuf[i]=' ');

  end;

end;
falls sonst mal jemand braucht
  Mit Zitat antworten Zitat
c64ranni

Registriert seit: 27. Okt 2006
Ort: Vomp
10 Beiträge
 
Delphi 5 Professional
 
#5

Re: Wort in einem Satz vor einem bestimmten Wort suchen

  Alt 3. Nov 2006, 09:46
Beim RESULT sollte einen Standardwert gesetzt werden

Du hast allerdings ein Problem, wenn zwischen dem RESULTwort und dem Suchwort 2 Leerzeichen sind, denn dann wirst du ne Zugriffsverletzung bekommen.
Mach das mal mit genau dem Beispiel was du angegeben hast. Da dürfte im sBUF ein zeichen weniger drinnen sein als du am Anfang bei I hast -- Ursache ist das TRIM!!!
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: Wort in einem Satz vor einem bestimmten Wort suchen

  Alt 3. Nov 2006, 09:57
Es sind auch noch andere Fehler enthalten, die Routine versagt z.B. am Ende des Strings oder bei Tabs statt Leerzeichen. Auch ist das Stringzusammengefüge nicht gerade das Schnellste.
Und kürzer als per Regex wird es wahrscheinlich nicht möglich sein .
Code:
\b(\w+)\s+Wort\b
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
3. Nov 2006, 10:43
Dieses Thema wurde von "sakura" von "Die Delphi-IDE" nach "Object-Pascal / Delphi-Language" verschoben.
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: Wort in einem Satz vor einem bestimmten Wort suchen

  Alt 3. Nov 2006, 11:25
Denk auch daran, daß Worttrenner nicht immer nur Leerzeichen sind! <- Hier war es z.B. das Ausrufezeichen.
Ralf Kaiser
  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 20:39 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