Ich habe eine Eingabezeichenfolge und möchte überprüfen, ob sie Folgendes enthält:
- Nur Briefe oder
- Nur Buchstaben und Zahlen oder
- Nur Buchstaben, Zahlen oder Unterstriche
Zur Verdeutlichung habe ich 3 verschiedene Fälle im Code, die jeweils eine andere Validierung erfordern. Was ist der einfachste Weg, um dies in C # zu erreichen?
quelle
Regex
für alle Buchstaben kompiliert und 3- mal schneller alsRegex
für alle Buchstaben mitIgnoreCase
Option (!) kompiliert .Nur Buchstaben:
Buchstaben und Zahlen:
Buchstaben, Zahlen und Unterstriche:
Beachten Sie, dass diese Muster auch mit internationalen Zeichen übereinstimmen (im Gegensatz zur Verwendung des
a-z
Konstrukts).quelle
Für diejenigen unter Ihnen, die lieber nicht mit Regex arbeiten möchten und sich im .NET 2.0 Framework (AKA no LINQ) befinden:
Nur Buchstaben:
Nur Zahlen:
Nur Zahlen oder Buchstaben:
Nur Zahlen oder Buchstaben oder Unterstriche:
quelle
Ich denke, es ist ein guter Fall, reguläre Ausdrücke zu verwenden:
quelle
Sie können die Zeichen der Zeichenfolge durchlaufen und mit der Char-Methode IsLetter überprüfen, aber Sie können auch einen Trick mit der Zeichenfolgenmethode IndexOfAny ausführen , um andere Zeichen zu suchen, von denen nicht angenommen wird, dass sie in der Zeichenfolge enthalten sind.
quelle
Durchlaufen Sie Zeichenfolgen und verwenden Sie die Funktionen von 'Char' namens 'IsLetter' und 'IsDigit'.
Wenn Sie etwas Spezifischeres benötigen, verwenden Sie die Regex-Klasse.
quelle
Wenn Sie ein Neuling sind, können Sie sich auf meinen Code beziehen. Ich habe einen Scheck ausgestellt, damit ich nur die Alphabete und Leerzeichen erhalten kann! Sie können die for-Schleife nach der zweiten if-Anweisung wiederholen, um die Zeichenfolge erneut zu validieren
quelle
Kürzlich habe ich Leistungsverbesserungen für eine Funktion vorgenommen, die mithilfe dieser Seite Buchstaben in einer Zeichenfolge überprüft.
Ich habe herausgefunden, dass die Lösungen mit Regex 30-mal langsamer sind als die mit dem Char.IsLetterOrDigit-Check.
Wir waren uns nicht sicher, ob diese Buchstaben oder Ziffern enthalten sind, und wir brauchten nur lateinische Zeichen. Deshalb haben wir unsere Funktion basierend auf der dekompilierten Version der Char.IsLetterOrDigit-Funktion implementiert.
Hier ist unsere Lösung:
Und die Verwendung ist wie folgt:
quelle
Bitte finden Sie die Methode, um zu überprüfen, ob es sich bei char um einen Buchstaben, eine Zahl oder ein Leerzeichen handelt. Andernfalls fügen Sie einen Unterstrich hinzu.
quelle