Sha256: 236248ffcddd8b3de6e51d080bc3200982e700507c538fa12f8157d59938fbf7

Contents?: true

Size: 1.4 KB

Versions: 218

Compression:

Stored size: 1.4 KB

Contents

public class PhoneNumber {

    private final String number;

    public PhoneNumber(String phoneNumber) {
        number = normalize(extractDigits(phoneNumber));
    }

    private String extractDigits(String dirtyNumber) {
        StringBuilder stringBuilder = new StringBuilder();
        for (char c : dirtyNumber.toCharArray()) {
            if (c == ' ' || c == '.' || c == '(' || c == ')' || c == '-') {
                // Remove spaces, dots, parentheses and hyphens
                continue;
            }
            if (!Character.isDigit(c)) {
                throw new IllegalArgumentException("Illegal character in phone number. "
                        + "Only digits, spaces, parentheses, hyphens or dots accepted.");
            }
            stringBuilder.append(c);
        }
        return stringBuilder.toString();
    }

    private String normalize(String number) {
        if (number.length() > 11 || number.length() < 10) {
            throw new IllegalArgumentException("Number must be 10 or 11 digits");
        }

        if (number.length() == 11) {
            if (number.startsWith("1")) {
                number = number.substring(1, number.length());
            } else {
                throw new IllegalArgumentException("Can only have 11 digits if number starts with '1'");
            }
        }

        return number;
    }

    public String getNumber() {
        return number;
    }
}

Version data entries

218 entries across 218 versions & 1 rubygems

Version Path
trackler-2.2.1.92 tracks/java/exercises/phone-number/.meta/src/reference/java/PhoneNumber.java
trackler-2.2.1.91 tracks/java/exercises/phone-number/.meta/src/reference/java/PhoneNumber.java
trackler-2.2.1.90 tracks/java/exercises/phone-number/.meta/src/reference/java/PhoneNumber.java
trackler-2.2.1.89 tracks/java/exercises/phone-number/.meta/src/reference/java/PhoneNumber.java
trackler-2.2.1.88 tracks/java/exercises/phone-number/.meta/src/reference/java/PhoneNumber.java
trackler-2.2.1.87 tracks/java/exercises/phone-number/.meta/src/reference/java/PhoneNumber.java
trackler-2.2.1.86 tracks/java/exercises/phone-number/.meta/src/reference/java/PhoneNumber.java
trackler-2.2.1.85 tracks/java/exercises/phone-number/.meta/src/reference/java/PhoneNumber.java
trackler-2.2.1.84 tracks/java/exercises/phone-number/.meta/src/reference/java/PhoneNumber.java
trackler-2.2.1.83 tracks/java/exercises/phone-number/.meta/src/reference/java/PhoneNumber.java
trackler-2.2.1.82 tracks/java/exercises/phone-number/.meta/src/reference/java/PhoneNumber.java
trackler-2.2.1.81 tracks/java/exercises/phone-number/.meta/src/reference/java/PhoneNumber.java
trackler-2.2.1.80 tracks/java/exercises/phone-number/.meta/src/reference/java/PhoneNumber.java
trackler-2.2.1.79 tracks/java/exercises/phone-number/.meta/src/reference/java/PhoneNumber.java
trackler-2.2.1.78 tracks/java/exercises/phone-number/.meta/src/reference/java/PhoneNumber.java
trackler-2.2.1.77 tracks/java/exercises/phone-number/.meta/src/reference/java/PhoneNumber.java
trackler-2.2.1.76 tracks/java/exercises/phone-number/.meta/src/reference/java/PhoneNumber.java
trackler-2.2.1.75 tracks/java/exercises/phone-number/.meta/src/reference/java/PhoneNumber.java
trackler-2.2.1.74 tracks/java/exercises/phone-number/.meta/src/reference/java/PhoneNumber.java
trackler-2.2.1.73 tracks/java/exercises/phone-number/.meta/src/reference/java/PhoneNumber.java