Abgesehen von allen anderen richtigen Antworten, Telefonnummern als ganze Zahlen zu speichern oder auf andere Weise Strippen Formatierung könnte eine schlechte Idee sein.
Hier sind ein paar Überlegungen:
- Benutzer internationale Telefonnummern zur Verfügung stellen können, die Ihre Erwartungen nicht passen. See these examples So würden die üblichen Gruppierungen für Standard-US-Nummern nicht passen.
- Benutzer müssen möglicherweise eine Erweiterung bereitstellen, z. B.
(555) 555-5555 ext#343
Der Schlüssel #
ist tatsächlich auf dem Dialer/Telefon, kann aber nicht in einer Ganzzahl codiert werden. Benutzer müssen möglicherweise auch den Schlüssel *
angeben.
- Bei einigen Geräten können Sie Pausen einfügen (normalerweise mit dem Zeichen
P
), die für Nebenstellen oder Menüsysteme oder für die Einwahl in bestimmte Telefonsysteme (z. B. im Ausland) erforderlich sein können. Diese können auch nicht als Ganzzahlen codiert werden.
[EDIT]
Es könnte eine gute Idee sein, sowohl eine ganze Version zu speichern und eine String-Version in der Datenbank. Wenn Sie Zeichenketten speichern, können Sie auch alle Interpunktionen mit einer der oben genannten Methoden auf Leerzeichen reduzieren. Ein regulärer Ausdruck dafür könnte sein:
// (222) 222-2222 ext# 333 -> 222 222 2222 # 333
phoneString = Regex.Replace(phoneString, @"[^\d#*P]", " ");
// (222) 222-2222 ext# 333 -> 2222222222333 (information lost)
phoneNumber = Regex.Replace(phoneString, @"[^\d]", "");
// you could try to avoid losing "ext" strings as in (222) 222-2222 ext.333 thus:
phoneString = Regex.Replace(phoneString, @"ex\w+", "#");
phoneString = Regex.Replace(phoneString, @"[^\d#*P]", " ");
BTW, int.Parse ist nicht Teil von C# –
Err, warum ist es dann dokumentiert? http://msdn.microsoft.com/en-us/library/system.int32.parse.aspx –
John Saunders ist einfach falsch. – Timwi