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

PhoneNumber.java 1.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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. return dirtyNumber.replaceAll("[^\\d]", "");
  8. }
  9. private String normalize(String number) {
  10. if(number.length() > 11 || number.length() < 10){
  11. throw new IllegalArgumentException("Number must be 10 or 11 digits");
  12. }
  13. if(number.length() == 11){
  14. if(number.startsWith("1")){
  15. number = number.substring(1, number.length());
  16. }
  17. else{
  18. throw new IllegalArgumentException("Can only have 11 digits if number starts with '1'");
  19. }
  20. }
  21. return number;
  22. }
  23. public String getNumber() {
  24. return number;
  25. }
  26. public String getAreaCode() {
  27. return number.substring(0, 3);
  28. }
  29. public String getExchangeCode() {
  30. return number.substring(3, 6);
  31. }
  32. public String getSubscriberNumber() {
  33. return number.substring(6, 10);
  34. }
  35. public String pretty() {
  36. return "(" + getAreaCode() + ") " + getExchangeCode() + "-" + getSubscriberNumber();
  37. }
  38. }