AGB  ·  Datenschutz  ·  Impressum  







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

String auf anderen String überprüfen

Ein Thema von fLaSh11 · begonnen am 15. Mär 2006 · letzter Beitrag vom 16. Mär 2006
Antwort Antwort
fLaSh11
(Gast)

n/a Beiträge
 
#1

String auf anderen String überprüfen

  Alt 15. Mär 2006, 17:39
hallo,
einfache Frage:
wie kann ich überprüfen, ob der String xyz im String s enthalten ist?

(z.B. wenn xyz:='hallo' und s:='hallo, peter, wie geht es dir?')

Danke im Vorraus für eure Antworten.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: String auf anderen String überprüfen

  Alt 15. Mär 2006, 17:40
schau mal nach pos, posex oder StrScan.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: String auf anderen String überprüfen

  Alt 15. Mär 2006, 17:41
POS?


Delphi-Quellcode:
xyz:='hallo';
s:='hallo, peter, wie geht es dir?';
if Pos(xyz, s) <> 0 then JuppIsDrin;
Und wenn die Groß-/Kleinschreibung egal sein soll, dann kan man ja auch die Groß-/Kleinschreibung vorher noch auf ein einheitliches Maß bringen
if Pos(AnsiLowerCase(xyz), AnsiLowerCase(s)) <> 0 then JuppIsDrin;
$2B or not $2B
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: String auf anderen String überprüfen

  Alt 15. Mär 2006, 18:22
In dem Zusammenhang sind vielleicht auch AnsiContainsText() und AnsiContainsStr() interessant.

Grüße vom marabu
  Mit Zitat antworten Zitat
fLaSh11
(Gast)

n/a Beiträge
 
#5

Re: String auf anderen String überprüfen

  Alt 16. Mär 2006, 13:52
Danke himitsu, das isses!

kann mir jetzt noch jemand sagen, wie ich diesen String xyz in s, so oft er vorkommt, eliminieren kann und ihn durch einen anderen String b ersetzen kann?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: String auf anderen String überprüfen

  Alt 16. Mär 2006, 13:58
Auch hier hilft die Delphi Hilfe weiter: Delphi-Referenz durchsuchenStringReplace. Einfach mal in der Hilfe bei den String Routinen gucken.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
fLaSh11
(Gast)

n/a Beiträge
 
#7

Re: String auf anderen String überprüfen

  Alt 16. Mär 2006, 14:05
habs selber hinbekommen so:
Delphi-Quellcode:
s:='bla bla bla bla';
xyz:='bla';
b:='muh sagt die kuh';
if Pos(xyz, s) <> 0 then begin
    repeat
    s1:=copy(s,0,pos(xyz,s)-1);
    s2:=copy(s,pos(xyz,s)+3,length(s)); //+3: je nach length(xyz)
    s:=s1+b+s2;
    until Pos(xyz, s) = 0;
end;
[edit]Vorteil: Funktioniert auch bei Delphi 3 Pro (StringReplace kennt der wohl nicht!)[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: String auf anderen String überprüfen

  Alt 16. Mär 2006, 16:27
Code:
if [i][b]Pos(xyz, s) <> 0[/b][/i] then begin
    repeat
        ...
    until [i][b]Pos(xyz, s) = 0[/b][/i];
end;
wie wäre es damit?
Code:
while [i][b]Pos(xyz, s) <> 0[/b][/i] do begin
    ...
end;
Und nein, es ist nicht so gut ... man nehmen dann doch lieber das StringReplace aus der CodeLib.
Also, z.B. xyz:='bla'; und b:='blaa'; ... ich glaub das ergibt 'ne Endlosschleife

PS:
//+3: je nach length(xyz) Wie wäre es, wenn man da direkt +length(xyz) hinschreiben würde?

ähhh ... copy(s,0, ... du weißt aber, daß Strings mit dem Index 1 beginnen?

Und wenn du es schon direkt imEingangsstring ersetzten möchtest, dann solltest du entweder mit PosEx (wobei, das gibt's in D3 ja auch nicht) arbeiten und dann jedesmal hinter dem eingesetzten String weitersuchen, oder von hinten nach vorne die xyz's ersetzen.

Delphi-Quellcode:
s :='bla bla bla bla';
a :='bla';
b :='muh sagt die kuh';

i := Pos(a, s);
while i > 0 do begin
  s := copy(s, 1, i - 1) + b + copy(s, i + length(a), length(s));
  i := PosEx(a, s, i + length(b));
  //alternativ für die Zeile mit PosEx geht auch folgendes, nach marabu in
  //http://www.delphipraxis.net/topic66582_alternative+zu+posex+und+insert.html
  // i2 := i + length(b);
  // i := Pos(a, Copy(s, i2, Length(s) - i2 + 1));
  // if i > 0 then inc(i, i2 - 1);
end;
PS: 'ne PosEx findet man da ... Code-Library -> Object-Pascal / Delphi-Language -> (Teil)String in anderem String suchen/zählen
$2B or not $2B
  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 13:19 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