Sha256: 02c8521035ea6498c8df1a797138ee24904d4cb4948b450c714a9bd60ffc9589

Contents?: true

Size: 1.35 KB

Versions: 230

Compression:

Stored size: 1.35 KB

Contents

using System.Text.RegularExpressions;

public class PhoneNumber
{
    private static readonly Regex DigitsOnly = new Regex(@"[^\d]");

    public string Number { get; private set; }
    public string AreaCode { get; private set; }

    public PhoneNumber(string phoneNumber)
    {
        Number = GetValidatedPhoneNumber(phoneNumber);
        AreaCode = Number.Substring(0, 3);
    }

    private static string GetValidatedPhoneNumber(string phoneNumber)
    {
        var stripped = StripOutNonNumerics(phoneNumber);

        if (IsInvalidPhoneNumber(stripped))
            return GetInvalidPhoneNumberReplacement(stripped);

        return stripped;
    }

    private static string StripOutNonNumerics(string value)
    {
        return DigitsOnly.Replace(value, "");
    }

    private static bool IsInvalidPhoneNumber(string phoneNumber)
    {
        return phoneNumber.Length != 10;
    }

    private static string GetInvalidPhoneNumberReplacement(string phoneNumber)
    {
        return IsPhoneNumberWithUSAreaCode(phoneNumber) ? phoneNumber.Substring(1) : "0000000000";
    }

    private static bool IsPhoneNumberWithUSAreaCode(string value)
    {
        return value.Length == 11 && value.StartsWith("1");
    }

    public override string ToString()
    {
        return string.Format("({0}) {1}-{2}", AreaCode, Number.Substring(3, 3), Number.Substring(6));
    }
}

Version data entries

230 entries across 230 versions & 1 rubygems

Version Path
trackler-2.2.1.12 tracks/csharp/exercises/phone-number/Example.cs
trackler-2.2.1.11 tracks/csharp/exercises/phone-number/Example.cs
trackler-2.2.1.10 tracks/csharp/exercises/phone-number/Example.cs
trackler-2.2.1.9 tracks/csharp/exercises/phone-number/Example.cs
trackler-2.2.1.8 tracks/csharp/exercises/phone-number/Example.cs
trackler-2.2.1.7 tracks/csharp/exercises/phone-number/Example.cs
trackler-2.2.1.6 tracks/csharp/exercises/phone-number/Example.cs
trackler-2.2.1.5 tracks/csharp/exercises/phone-number/Example.cs
trackler-2.2.1.4 tracks/csharp/exercises/phone-number/Example.cs
trackler-2.2.1.3 tracks/csharp/exercises/phone-number/Example.cs
trackler-2.2.1.2 tracks/csharp/exercises/phone-number/Example.cs
trackler-2.2.1.1 tracks/csharp/exercises/phone-number/Example.cs
trackler-2.2.1.0 tracks/csharp/exercises/phone-number/Example.cs
trackler-2.2.0.6 tracks/csharp/exercises/phone-number/Example.cs
trackler-2.2.0.5 tracks/csharp/exercises/phone-number/Example.cs
trackler-2.2.0.4 tracks/csharp/exercises/phone-number/Example.cs
trackler-2.2.0.3 tracks/csharp/exercises/phone-number/Example.cs
trackler-2.2.0.2 tracks/csharp/exercises/phone-number/Example.cs
trackler-2.2.0.1 tracks/csharp/exercises/phone-number/Example.cs
trackler-2.2.0.0 tracks/csharp/exercises/phone-number/Example.cs