![]() |
Delphi-Version: XE7
[gelöst] Unerlaubte Zeichen in String finden
Moin,
ich stehe mir gerade selber im Wege. Ich möchte Überprüfen ob andere Zeichen als "0" ... "9"; "a" ... "z"; "A" ... "Z"; "-" (Bindestrich); "_" (Unterstrich) " " (Leerzeichen) in einem String enthaltren sind. Ich könnte jetzt zwar mittels
Delphi-Quellcode:
irgendwie das zusammen stricken, aber gibt es nicht einen Wege zu prüfen ob irgendein Zeichen aus einer Liste von Zeichen in einem String vorhanden ist?
pos
Gruß HEiko |
AW: Unerlaubte Zeichen in String finden
Ich glaube da könnte
Delphi-Quellcode:
hilfreich sein.
CharInSet
|
AW: Unerlaubte Zeichen in String finden
yupp
Delphi-Quellcode:
function HatStringSonderzeichen(Value: string): boolean;
var i: integer; begin Result := false; for i := 1 to Length(Value) do if not CharInSet(Value[i], ['0'..'9','a'..'z','A'..'Z',' ','-','_']) then Exit(True); end; |
AW: Unerlaubte Zeichen in String finden
Alternativ könnte man dafür auch Regular Expressions verwenden...
Unit RegularExpressions einbinden
Delphi-Quellcode:
Im XE7 sollte das auch für Leerstrings funktionieren (HatStringKeineSonderzeichen matched, HatStringSonderzeichen nicht) - das müsstest wenn nötig aber testen.
function HatStringKeineSonderzeichen(const aString: string): Boolean;
begin result := TRegex.IsMatch(aString, '^[A-Za-z0-9 _\-]*$'); end; function HatStringSonderzeichen(const aString: string): Boolean; begin result := TRegex.IsMatch(aString, '[^A-Za-z0-9 _\-]'); end; In meinem XE3 will er Leerstrings absolut nicht matchen, da müsste man also ggf. eine Sonderbehandlung ergänzen. Umgestellt wurde das wohl mit XE6 ( ![]() |
AW: Unerlaubte Zeichen in String finden
Zitat:
Das ist auch erstmal OK, denn deine Definition besteht nur aus den gültigen Zeichen und "alle" Ungültigen wirst du nicht kennen und sie auch nicht alle prüfen wollen. Lösung: Prüfe jedes Zeichen, ob es gültig ist und wenn nicht. Was ist mit einem Leerstring "ohne" irgendein Zeichen? Wie du das prüfst ist egal ... mit Schleife drüberlaufen, RegEx oder sonstwie. |
AW: Unerlaubte Zeichen in String finden
Zitat:
Delphi-Quellcode:
function HatStringUnerlaubteZeichen(Value: string): boolean;
begin Result := false; ... |
[gelöst] :AW: Unerlaubte Zeichen in String finden
Moin,
Zitat:
Es hat einen Moment gedauert bis mir aufging, das ich die Dateiendung incl. Punkt vorher entfernen muß :o Danke, für Eure Hilfe. Gruß HEiko |
AW: Unerlaubte Zeichen in String finden
Zitat:
Es wurde nirgendwo genannt, wie die "Definition" dafür aussieht, also was in diesem Fall gemacht wird. Ein String ohne irgendwelche Teichen ist erlaubt, nach dieser Funktion "hat ungültige Zeichen". Und jetzt, wo wir wissen, daß es eine Prüfung für Dateinamen werden sollte, was natürlich vorher nichtmal erwähnt wurde, dann wären zwar Dateien ohne "Dateiname", also nur mit einer Dateiendung, zwar gültig (nach dieser Funktion und auch für da Dateisysten ... siehe ".htaccess"), aber ob das wirklich so sein sollt?
Delphi-Quellcode:
, aber dann müsste man die Funktion umbenennen, wobei ich die Funktion auch gleich umdrehen würde, indem ich sie "IsValidFilename" nennen würde, oder vielleicht auch
Result := Value = '';
![]() ![]() ![]() ![]() [DP]Dateiname gültig[/DP] :roll: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:15 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-2025 by Thomas Breitkreuz