Hallo zusammen
Über mein System kann man neue benutzer erstellen. Die PID (Personal ID) kann man sich selber aussuchen.
Nun möchte ich wissen, ob es irgendwelche Regeln gibt, indem beschrieben ist, welche Zeichen etc. für ID nicht zu empfehlen sind. Z.b. leere strings, div. sonderzeichen usw....
Was ich jetzt schon rausfiltere sind folg. zeichen und zwar mit folg. Code:
String = strString.Replace("'", "''");
SafeString = strVarGetSafeString.Replace("<", "<");
String = String.Replace(">", ">");
String = String.Replace("\r\n", "<BR />");
String = String.Replace("'", "'");
String = String.Replace(",", ",");
String = String.Trim();
danke
mhm.. nicht negative Zahlen?
be the hammer, not the nail!
Nur mal so als Beispiel, wie ich normalerweise LoginNamen validiere:
public static void ValidateString(string name)
{
if (String.IsNullOrEmpty(name))
throw new ArgumentNullException("Name");
for (int i = 0; i < name.Length; i++)
{
char ch = name[i];
if (ch.CompareTo('_')!= 0)
{
UnicodeCategory uc = Char.GetUnicodeCategory(ch);
switch (uc)
{
case UnicodeCategory.UppercaseLetter:
case UnicodeCategory.LowercaseLetter:
case UnicodeCategory.DecimalDigitNumber:
break;
default:
throw new ArgumentOutOfRangeException("'" + name + "' invalid input.");
}
}
}
}
@syst3m... dein code ist klasse!!!
bei meinem ist mir augefallen, dass aus irgendwelchen Gründen die Trim() Methode nicht richtig funzt. Es werden trotzdem PID's mit leerstrings gespeichert... fehler habe ich jedoch noch nicht gefunden... naja..
doch noch eine frage... warum machst du einen CompareTo('_') ??? underline???
Hallo zusammen
Die Möglichkeit mit der Unicodecategory kannte ich noch nicht, sieht nett aus.
Ich arbeite auch lieber mit einem Verfahren dass die nichterlaubten (aber gewollten) in erlaubte umwandelt und dann nur die erlaubten annimmt.
Ein Beispiel um eine saubere Url zu bekommen:
public static string GetCleanUrl(string dirtyUrl) {
if (dirtyUrl == null)
return String.Empty;
string allowedChars = "abcdefghijklmnopqrstuvwxyz1234567890-_";
dirtyUrl = dirtyUrl.ToLower();
dirtyUrl = dirtyUrl.Replace("\x00e4", "ae");
dirtyUrl = dirtyUrl.Replace("\x00fc", "ue");
dirtyUrl = dirtyUrl.Replace("\x00f6", "oe");
dirtyUrl = dirtyUrl.Replace(" ", "-");
StringBuilder cleanUrl = new StringBuilder();
int i = 0;
int length = dirtyUrl.Length;
while (i < length) {
char c = dirtyUrl[i];
if (allowedChars.IndexOf(c) > -1) {
cleanUrl.Append(c);
}
i++;
}
return cleanUrl.ToString();
}
Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011
Ich arbeite gerade mit WIX (Windows Installer Xml) und dort können für IDs nur Buchstaben, Zahlen, Strichunten und Punkt verwendet werden, wobei die ID mit einem Buchstaben oder Strichunten beginnen muss.
Ich persönlich finde diese Zeichen als ausreichend. Vorteilhaft ist der Punkt, damit lässt sich gut eine Hierarchie für den Benutzer aufbauen.
Zum Validieren würde ich hierfür Regex verwenden.
Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...