AGB  ·  Datenschutz  ·  Impressum  







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

Pos() nur für ganze wörter

Ein Thema von freak1985 · begonnen am 23. Jun 2005 · letzter Beitrag vom 24. Jun 2005
Antwort Antwort
Seite 1 von 2  1 2      
freak1985
(Gast)

n/a Beiträge
 
#1

Pos() nur für ganze wörter

  Alt 23. Jun 2005, 20:31
hi,

kennt jemand eine funktion wie Pos, die aber nur die stelle zurückgibt, wenn es sich um ein einzelnes wort handelt?

also wenn ich mit Pos("blaHALLObla", 'HALLO') suche, findet er ja eine stelle.
aber das soll eine "erweiterte pos funktion" nicht. die sollte das dann aber in solch einem string finden PosExt^^("bla HALLO bla", 'HALLO')


wisst ihr was ich meine?

gibts da was in delphi? wenn nicht, habt ihr einen eleganten ansatz? mir fällt nämlich keiner ein^^
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Pos() nur für ganze wörter

  Alt 23. Jun 2005, 20:33
dann musst du eben mit PosEx suchen und prüfen ob vor der fundstelle eine komma, leerzeichen etc. steht, wenn nicht mit posex das näcshte vorkommen suchen etc.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
freak1985
(Gast)

n/a Beiträge
 
#3

Re: Pos() nur für ganze wörter

  Alt 23. Jun 2005, 20:36
na gut wenns net anders geht besorg ich mir halt die PosEx. mein D6 Enter hat die PosEx nämlich noch net
  Mit Zitat antworten Zitat
Benutzerbild von svenwel.de
svenwel.de

Registriert seit: 8. Apr 2005
Ort: Neunkirchen
23 Beiträge
 
Delphi 7 Personal
 
#4

Re: Pos() nur für ganze wörter

  Alt 23. Jun 2005, 20:36
ehmm versuch doch mal so :

i:=pos(string,'Suchwort')+Length('Suchwort'); dies dann natürlich noch in die copy() funktion mit reinpacken:

copy(string,pos(string,'Suchwort'),i); ... und dann halt vergleichen

Sicher nicht die beste lösung aber ne möglichkeit

Grüße
Sven
Sven W.
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#5

Re: Pos() nur für ganze wörter

  Alt 23. Jun 2005, 20:37
Versteh ich an der Frage was falsch, oder dürfte

Pos('Irgendwas HALLO bla', ' HALLO '); reichen?

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#6

Re: Pos() nur für ganze wörter

  Alt 23. Jun 2005, 20:40
Ein weiterer Lösungansatz wären regular expressions.
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#7

Re: Pos() nur für ganze wörter

  Alt 23. Jun 2005, 20:50
Delphi-Quellcode:
function PosExt(SearchString: string; str: string);
begin
  result := pos(SearchString, str);
  while ind > 0 do
    if ((result = 1) or (not (SearchString[result - 1] in ['A'..'Z', 'a'..'z']))) and
       ((result + length(SearchString) > length(str)) or (not (SearchString[result + length(SearchString)] in ['A'..'Z', 'a'..'z']))) then
      exit
    else begin
      delete(str, 1, length(SearchString));
      result := pos(SearchString, str);
    end;
end;
Der Code ist jetzt mal so heruntergetippt, also ne wahrscheinlichkeit von 25% dass er funktioniert
Das Prinzip ist jedenfalls mal, dass man den String mit der Pos-Funktion sucht. Anschließend schaut man, ob das Zeichen davor und danach ein Buchstabe ist. Wenn das beide male nicht der Fall ist, ist es ein einzelstehendes Wort. Damit jedoch nicht beim Suchstring 'haus' und str='nach hause ist im haus' nach dem ersten (fehlgschlagenen versuch 'hause') die funktion 0 zurück gibt geht das ganze in die schleife.
Falls dann das Wort alleine wirklich nie in str enthalten ist, gibt die Funktion 0 zurück


Ich send das jetzt trotzdem mal ab, weil ichs nich um sonst geschrieben haben will
@Airblader: Bei der Funktion gäbs Probs, wenn nach dem Wort gleich ein . oder was anderes als ein Leerzeichen ist
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
freak1985
(Gast)

n/a Beiträge
 
#8

Re: Pos() nur für ganze wörter

  Alt 23. Jun 2005, 21:19
danke

werds probieren
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: Pos() nur für ganze wörter

  Alt 23. Jun 2005, 21:52
... und weil wir in Deutschland sind, nimmst du am besten statt
ch in ['A'..'Z', 'a'..'z'] eine der Funktionen
Delphi-Quellcode:
IsCharAlpha(ch) oder
IsCharAlphaNumeric(ch)
Volker
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#10

Re: Pos() nur für ganze wörter

  Alt 24. Jun 2005, 00:26
...eine der Funktionen
Delphi-Quellcode:
IsCharAlpha(ch) oder
IsCharAlphaNumeric(ch)
Wo sind denn die ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 01:18 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