lots of exercises in java... from https://github.com/exercism/java

PhoneNumber.java 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. public class PhoneNumber {
  2. private final String number;
  3. public PhoneNumber(String phoneNumber) {
  4. number = normalize(extractDigits(phoneNumber));
  5. }
  6. private String extractDigits(String dirtyNumber) {
  7. StringBuilder stringBuilder = new StringBuilder();
  8. for (char c : dirtyNumber.toCharArray()) {
  9. if (c == ' ' || c == '.' || c == '(' || c == ')' || c == '-') {
  10. // Remove spaces, dots, parentheses and hyphens
  11. continue;
  12. }
  13. if (!Character.isDigit(c)) {
  14. throw new IllegalArgumentException("Illegal character in phone number. "
  15. + "Only digits, spaces, parentheses, hyphens or dots accepted.");
  16. }
  17. stringBuilder.append(c);
  18. }
  19. return stringBuilder.toString();
  20. }
  21. private String normalize(String number) {
  22. if (number.length() > 11 || number.length() < 10) {
  23. throw new IllegalArgumentException("Number must be 10 or 11 digits");
  24. }
  25. if (number.length() == 11) {
  26. if (number.startsWith("1")) {
  27. number = number.substring(1, number.length());
  28. } else {
  29. throw new IllegalArgumentException("Can only have 11 digits if number starts with '1'");
  30. }
  31. }
  32. return number;
  33. }
  34. public String getNumber() {
  35. return number;
  36. }
  37. }