![]() |
Enthält String bestimmte Zeichen
Ich möchte prüfen, ob ein String bestimmte Zeichen enthält. So à la
Delphi-Quellcode:
Das klappt aber nur für Chars. Ich möchte aber jetzt nicht den ganzen String Zeichen für Zeichen prüfen. Gibts da ne fertige Funktion in Delphi. Dei Hilfe mir nicht viel geboten.
if S[1] in ['a'..'z'] then Result := true else Result := false ;
Das ganze soll eine Paswortvalidierung sein, die bestimmten Kriterien entpsrechen müssen. Es müssen Kleinbuchstabem Grossbuchstaben und Sonderzeichen enthalten sein. |
Re: Enthält String bestimmte Zeichen
Pos-Funktion (Siehe Delphi-Hilfe).
|
Re: Enthält String bestimmte Zeichen
Das wollte ich auch schreiben, das ist aber nicht das, was er will. Mit Pos könnte er sehen, ob ein bestimmtes Zeichen im String ist. Er will aber schauen, ob eines von mehreren Zeichen im String enthalten sind.
Allerdings sehe ich auch keine andere Möglichkeit, als per Schleife mit Pos alle Zeichen durchzugehen. Kannst das ja nett in eine Funktion verpacken und mit einer Menge als Parameter aufrufen. |
Re: Enthält String bestimmte Zeichen
Hai Jelly,
ich habe das jetzt weiter geprüft :oops: aber eventuell ist ja ![]() Aber mit einer kleinen Schleife solltest Du das auch ganz schnell mit Boardmitteln machen können.
Delphi-Quellcode:
type
TCharSet = set of char; function CharInString(aString: string; achars: TCharSet): boolean; var ndx: integer; begin Result := True; for ndx := 1 to Length(aString) do begin if not (aString[ndx] in achars) then begin Result := False; exit; end; end; end; procedure TForm1.btn_StringTestClick(Sender: TObject); begin if not (CharInString('Test',['a'..'z'])) then begin ShowMessage('blubb'); end; end; |
Re: Enthält String bestimmte Zeichen
@Fischli:
dein CharInString sieht aber mehr nach "besteht String nur aus diesen Chars" aus. Aber so wie ich das verstanden hab, will er wissen, ob einer der Chars in dem String ist :gruebel:
Code:
@leedl
function CharInString(aString: string; achars: TCharSet): boolean;
var ndx: integer; begin Result := [color=red]False[/color]; for ndx := 1 to Length(aString) do begin if [color=red]aString[ndx] in achars[/color] then begin Result := [color=red]True[/color]; exit; end; end; end; man kann ja das Pos auch mit mehreren Chars durchfüren und wenn eines davon > 0 ausgibt, dann ist eines der Zeichen vorhanden. |
Re: Enthält String bestimmte Zeichen
Noch eine kleine Anregung von mir:
Delphi-Quellcode:
Grüße vom marabu
const
cgUcase = 0; cgLcase = 1; cgPunct = 2; MIN_PSWD_LEN = 8; function IsStrongPassword(s: string): boolean; var cGroup: array [cgUcase..cgPunct] of byte; i: integer; begin ZeroMemory(@cGroup, SizeOf(cGroup)); for i := 1 to Length(s) do case s[i] of 'A'..'Z': Inc(cGroup[cgUcase]); 'a'..'z': Inc(cGroup[cgLcase]); else Inc(cGroup[cgPunct]); end; Result := (Length(s) >= MIN_PSWD_LEN) and (cGroup[cgUcase] > 0) and (cGroup[cgLcase] > 0) and (cGroup[cgPunct] > 0); end; |
Re: Enthält String bestimmte Zeichen
(OT) In Perl könnt ich das :mrgreen: (/OT)
|
Re: Enthält String bestimmte Zeichen
Zitat:
//Edit: Oder meintest du, daß man mehrere Chars als Parameter auf einmal übergeben kann? :shock: Hab ich noch gar nicht gewußt... |
Re: Enthält String bestimmte Zeichen
OK, die CharInString Funktion machts, wie's aussieht. Ich dachte nur Delphi liefert sowas von Haus aus mit. Nachdem ich schon mehrmals mir ne eigene Funktion gebastelt habe, und später in Erfahrung gebracht habe, dass es genauso was in OP schon gibt, dacht ich mir diesmal, ich frag mal lieber hier nach.
Danke für den Code |
Re: Enthält String bestimmte Zeichen
Versuchs mal mit Regular Expressions...
![]() Wie weiter oben schon gesagt wurde: Mit Perl geht das; Und zwar mit der gleichen Methode ^^ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz