Suche in TStringlist

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
malabarista
Beiträge: 321
Registriert: Sa 11. Jun 2016, 12:16
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
CPU-Target: 64Bit
Wohnort: Konstanz

Suche in TStringlist

Beitrag von malabarista »

In TStringlist gibt es die Suchfunktionen FIND und INDEXOF.
Die arbeiten aber nur auf exakte Gleichheit. Ich benötige dagegen eine Suche nach Stringanfängen.

Beispiel:
string1:='abcdefgh'';
string2:='ab12345';
string3:='cc8899';

Und nun möchte ich alle Strings finden, die mit 'ab' beginnen.

Wie geht das ?

Linkat
Lazarusforum e. V.
Beiträge: 560
Registriert: So 10. Sep 2006, 23:24
OS, Lazarus, FPC: Linux Mint 22; Lazarus 4.0 FPC 3.2.2; RaspiOS
CPU-Target: AMD 64, ARM 64
Wohnort: nr Stuttgart

Re: Suche in TStringlist

Beitrag von Linkat »

Hallo malabarista,

die Funktion, die du suchst heist 'pos' für Postion. In deinem Fall kannst du schreiben:

Code: Alles auswählen

 
s:='ab';
if pos(s,string1)=1 then writeln(s,' steht am Anfang von ',string1)
                    else writeln(s,' steht nicht am Anfang von ' ,string1);)
 
Du musst natürlich jedes Element deiner Stringliste durchgehen und prüfen!

Gruß, Linkat
Linux Mint 21.3; Lazarus 3.4 FPC 3.2.2; RaspiOS

Mathias
Beiträge: 6914
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Suche in TStringlist

Beitrag von Mathias »

Mit fpc 3.1 hat es dafür noch einen neue Function gegeben,

Code: Alles auswählen

const
  String1 = '1234567890';
var
  s: string;
begin
  s := '12';
 
  if String1.IndexOf(s) = 0 then begin
    writeln(s, ' steht am Anfang von ', string1);
  end else begin
    writeln(s, ' steht nicht am Anfang von ', string1);
  end;
 
end;  
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

malabarista
Beiträge: 321
Registriert: Sa 11. Jun 2016, 12:16
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
CPU-Target: 64Bit
Wohnort: Konstanz

Re: Suche in TStringlist

Beitrag von malabarista »

ok.Dankeschön.

Dann werde ich eine binäre Suche nach diesen Teilstrings machen.

Antworten