AGB  ·  Datenschutz  ·  Impressum  







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

Pos-Funktion rückwärts

Ein Thema von Mooshead · begonnen am 15. Mär 2008 · letzter Beitrag vom 1. Jan 2011
Antwort Antwort
Mooshead

Registriert seit: 27. Jul 2007
32 Beiträge
 
#1

Pos-Funktion rückwärts

  Alt 15. Mär 2008, 16:00
Hallo,

ich habe irgendwo in dem Forum mal von einer Funktion gelesen, die wie Pos einen Substring in einem String sucht, die Suche aber von hinten beginnt.

Bsp:

pos('a','Hallo an alle') liefert den Wert 2 zurück.

Ich hätte aber gerne, dass die Funktion den Wert 4 zurück gibt.


Vielen Danke für eure Antworten
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Pos-Funktion rückwärts

  Alt 15. Mär 2008, 16:01
Moin Mooshead,

wenn Dir die Suche nach einem einzelnen Zeichen reicht, kannst Du LastDelimiter nehmen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Mooshead

Registriert seit: 27. Jul 2007
32 Beiträge
 
#3

Re: Pos-Funktion rückwärts

  Alt 15. Mär 2008, 16:04
Vielen Dank,

das reicht für meine Zwecke
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Pos-Funktion rückwärts

  Alt 15. Mär 2008, 16:04
Delphi-Quellcode:
uses Strutils...

function PosBackward(substr, str: String): Integer;
begin
  result:=pos(substr, AnsiReverseString(str));
end;
Sollte dir "4" liefern, bei deinem Beispiel
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Pos-Funktion rückwärts

  Alt 15. Mär 2008, 16:15
Hier nochmal ein weiters Beispiel...

Delphi-Quellcode:
function MyPos(search, subject:string; LeftToRight:boolean):integer;
var posi:integer;
    temp:string;
begin
  Result:=0;
  temp:=subject;
  repeat
    posi:=pos(search, temp);
    delete(temp, 1, posi);
    Result:=Result + posi;
  until ( LeftToRight and (posi >= 0))
        or (not LeftToRight and (posi = 0));
  if not LeftToRight and (Result > 0) then
    Result:=length(subject) - Result +1;
end;
Gruss
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#6

AW: Pos-Funktion rückwärts

  Alt 1. Jan 2011, 19:34
Danke genau was ich gesucht habe
Martin MIchael
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#7

AW: Pos-Funktion rückwärts

  Alt 1. Jan 2011, 20:23
Die vielen Delete in der Schleife sind eher suboptimal,
dann doch lieber "nur" 2 Stringoperationen.
Result := Length(str) - Length(substr) - Pos(AnsiReverseString(substr), AnsiReverseString(str)) + 2; [edit]
siehe http://www.delphipraxis.net/105585-p...ml#post1071689
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 1. Jan 2011 um 21:02 Uhr)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Pos-Funktion rückwärts

  Alt 1. Jan 2011, 20:27
Sehr schnell dürfte das aber nicht sein mit Delete() . Es gab übrigens neulich erst einen Thread dazu: "Pos von hinten"
(ich find den Titel ja etwas zweideutig )
  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 12:58 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