Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Enthält String bestimmte Zeichen (https://www.delphipraxis.net/53261-enthaelt-string-bestimmte-zeichen.html)

Jelly 13. Sep 2005 10:49


Enthält String bestimmte Zeichen
 
Ich möchte prüfen, ob ein String bestimmte Zeichen enthält. So à la

Delphi-Quellcode:
if S[1] in ['a'..'z'] then Result := true else Result := false ;
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.

Das ganze soll eine Paswortvalidierung sein, die bestimmten Kriterien entpsrechen müssen. Es müssen Kleinbuchstabem Grossbuchstaben und Sonderzeichen enthalten sein.

Bernhard Geyer 13. Sep 2005 10:59

Re: Enthält String bestimmte Zeichen
 
Pos-Funktion (Siehe Delphi-Hilfe).

leddl 13. Sep 2005 11:01

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.

Sharky 13. Sep 2005 11:04

Re: Enthält String bestimmte Zeichen
 
Hai Jelly,

ich habe das jetzt weiter geprüft :oops: aber eventuell ist ja TRegExpr etwas für dich?

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;

himitsu 13. Sep 2005 11:13

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:
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;
@leedl
man kann ja das Pos auch mit mehreren Chars durchfüren und wenn eines davon > 0 ausgibt, dann ist eines der Zeichen vorhanden.

marabu 13. Sep 2005 11:14

Re: Enthält String bestimmte Zeichen
 
Noch eine kleine Anregung von mir:

Delphi-Quellcode:
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;
Grüße vom marabu

Kara 13. Sep 2005 11:32

Re: Enthält String bestimmte Zeichen
 
(OT) In Perl könnt ich das :mrgreen: (/OT)

leddl 13. Sep 2005 11:34

Re: Enthält String bestimmte Zeichen
 
Zitat:

Zitat von himitsu
man kann ja das Pos auch mit mehreren Chars durchfüren und wenn eines davon > 0 ausgibt, dann ist eines der Zeichen vorhanden.

Klar, hab ich ja auch geschrieben. Nur müßte er eben dafür ein Char nach dem anderen durchgehen. Ich gehe mal davon aus, daß er wissen wollte, ob es einen einfaches Befehl gibt, so daß er es lösen kann, wie mit einzelnen Chars.

//Edit:
Oder meintest du, daß man mehrere Chars als Parameter auf einmal übergeben kann? :shock: Hab ich noch gar nicht gewußt...

Jelly 13. Sep 2005 12:21

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

SubData 13. Sep 2005 12:25

Re: Enthält String bestimmte Zeichen
 
Versuchs mal mit Regular Expressions... www.regexpstudio.com

Wie weiter oben schon gesagt wurde: Mit Perl geht das; Und zwar mit der gleichen Methode ^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:17 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