using System.Text.RegularExpressions;
public static void Main()
string[] phoneNumbers = new string[]
"3342015352", "(334) 201-5352", "334-2015352", "334-201-5352", "2015352", "201-5352", "4711", "1", "12", "123", "123456789101112333", "1234-567891-0111-2333", "", " "
foreach (var phone in phoneNumbers)
Console.WriteLine(FormatCanonicalPhone(phone));
Console.WriteLine(FormatCanonicalPhone(null));
private static string FormatCanonicalPhone(string phoneNumber)
if (string.IsNullOrEmpty(phoneNumber))
phoneNumber = new Regex(@"\D").Replace(phoneNumber, string.Empty);
switch (phoneNumber.Length)
phoneNumber = string.Format("{0}-{1}", phoneNumber.Substring(0, 3), phoneNumber.Substring(3, 4));
phoneNumber = string.Format("({0}) {1}-{2}", phoneNumber.Substring(0, 3),
phoneNumber.Substring(3, 3), phoneNumber.Substring(6, 4));