Schnelle Add-On-Anforderung in unserem Projekt. Ein Feld in unserer Datenbank, in dem eine Telefonnummer gespeichert ist, darf nur 10 Zeichen zulassen. Wenn ich also "(913) -444-5555" oder etwas anderes übergeben bekomme, gibt es eine schnelle Möglichkeit, eine Zeichenfolge durch eine spezielle Ersetzungsfunktion zu führen, bei der ich eine Reihe von Zeichen übergeben kann, um dies zuzulassen?
Regex?
c#
regex
string
phone-number
Matt Dawdy
quelle
quelle
[^\d]
kann vereinfacht werden, um\D
Sie können es einfach mit Regex tun:
quelle
Sie müssen Regex nicht verwenden.
quelle
system.linq;
Hier ist die Methode der Erweiterungsmethode.
quelle
Mit den Regex-Methoden in .NET sollten Sie in der Lage sein, jede nicht numerische Ziffer mit \ D wie folgt abzugleichen:
quelle
Wie wäre es mit einer Erweiterungsmethode, die keinen regulären Ausdruck verwendet?
Wenn Sie sich an eine der Regex-Optionen halten, verwenden Sie diese zumindest
RegexOptions.Compiled
in der statischen Variablen.Dies baut auf der Antwort von Usman Zafar auf, die in eine Methodengruppe konvertiert wurde.
quelle
Versuchen Sie Folgendes, um die beste Leistung und einen geringeren Speicherverbrauch zu erzielen:
Das Ergebnis auf meinem Computer ist:
Init ...
Zeit: 307
Zeit: 2178
quelle
Ich bin mir sicher, dass es einen effizienteren Weg gibt, aber ich würde dies wahrscheinlich tun:
quelle
Versuche dies
quelle
return newPhone.ToString();
gibt "System.Char []" zurück. Ich denke du meintestreturn new string(newPhone);
, aber das filtert auch die Zahlen 0 und 9 wegen des>
und<
anstelle von>=
und heraus<=
. Aber selbst dann hat der String nachgestellte Leerzeichen, da dasnewPhon
Array länger ist als es sein muss.