HOWTO · Java

Java의 알파벳 전화 번호 번역기

이 자습서는 Java에서 알파벳 전화 번호 변환기를 생성하는 방법을 보여줍니다.

이 페이지의 내용

이 자습서는 Java에서 알파벳 전화 번호 변환기를 생성하는 방법을 보여줍니다.

Java의 알파벳 전화 번호 번역기

때때로 회사는 555-GET-FOOD와 같은 전화 번호 형식을 사용하는데, 이는 고객이 쉽게 기억할 수 있도록 전화 번호를 작성하는 표준화된 프로세스입니다. 전화 번호에 대한 문자의 표준 버전은 다음과 같습니다.

A, B, and C = 2
D, E, and F = 3
G, H, and I = 4
J, K, and L = 5
M, N, and O = 6
P, Q, R, and S = 7
T, U, and V = 8
W, X, Y, and Z = 9

위의 시나리오를 기반으로 알파벳 전화 번호에서 숫자로 전화 번호 변환기를 만들 수 있습니다. 이는 다른 방법을 통해 달성할 수 있습니다.

regexswitch 문을 사용하여 알파벳 전화 번호 변환기 생성

Regex는 주어진 패턴을 일치시키는 데 사용되는 Java 패키지이므로 표준 전화 번호 형식이 123-XXX-XXXX인 경우 이 번호의 정규식 패턴은 [0-9]{3}-[a-zA-Z]{3}-[a-zA-Z]{4}, 입력 전화번호를 표준 형식과 일치시키는 데 사용됩니다.

Switch 문은 위 목록에 제공된 문자와 숫자를 기반으로 전화 번호 문자열에 번호가 추가되는 경우를 생성하는 데 사용할 수 있습니다. 이 예제를 구현해 보겠습니다.

package delftstack;

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Example {
  public static void main(String[] args) {
    // user input for the phone number
    Scanner PhoneNumber_Input = new Scanner(System.in);

    System.out.println("Please enter a Phone number with the format: (123-XXX-XXXX) ");

    // Convert the phone number to a string
    String Phone_Number = PhoneNumber_Input.nextLine();
    if (Validate_PhoneNumber(Phone_Number)) {
      Phone_Number = Phone_Number.toUpperCase();
      String Translated_PhoneNumber = Translate_PhoneNumber(Phone_Number);
      System.out.println(Translated_PhoneNumber);
    } else {
      System.out.println("Wrong phone number format.");
      return;
    }
  }

  private static boolean Validate_PhoneNumber(String Phone_Number) {
    Pattern Number_Pattern = Pattern.compile("[0-9]{3}-[a-zA-Z]{3}-[a-zA-Z]{4}");

    // Create The matcher object.
    Matcher Number_Matcher = Number_Pattern.matcher(Phone_Number);
    if (Number_Matcher.find()) {
      return true;
    }
    return false;
  }

  public static String Translate_PhoneNumber(String Phone_Number) {
    String Phone_Number_Result = "123-";
    String Phone_Number_Suffix = Phone_Number.substring("123-".length());
    for (int i = 0; i < Phone_Number_Suffix.length(); i++) {
      char Number_Character = Phone_Number_Suffix.charAt(i);
      if (Character.isLetter(Number_Character)) {
        switch (Number_Character) {
          case 'A':
          case 'B':
          case 'C':
            Phone_Number_Result += "2";
            break;
          case 'D':
          case 'E':
          case 'F':
            Phone_Number_Result += "3";
            break;
          case 'G':
          case 'H':
          case 'I':
            Phone_Number_Result += "4";
            break;
          case 'J':
          case 'K':
          case 'L':
            Phone_Number_Result += "5";
            break;
          case 'M':
          case 'N':
          case 'O':
            Phone_Number_Result += "6";
            break;
          case 'P':
          case 'Q':
          case 'R':
          case 'S':
            Phone_Number_Result += "7";
            break;
          case 'T':
          case 'U':
          case 'V':
            Phone_Number_Result += "8";
            break;
          case 'W':
          case 'X':
          case 'Y':
          case 'Z':
            Phone_Number_Result += "9";
            break;
        }
      } else if (Number_Character == '-') {
        Phone_Number_Result += "-";
      }
    }
    return Phone_Number_Result;
  }
}

위의 코드는 세 가지 메소드를 포함하고 있는데, 첫 번째는 메인 메소드, 두 번째는 regex 메소드에 따라 전화번호를 검증하는 메소드, 세 번째는 전화번호를 번역하는 메소드입니다. 출력을 참조하십시오.

Please enter a Phone number with the format: (123-XXX-XXXX)
444-CAT-GOOD
123-228-4663

보시다시피 444-CAT-GOOD 전화번호는 123-228-4663으로 번역됩니다.

Google Guava를 사용하여 알파벳 전화 번호 번역기 생성

Google Guava는 많은 작업을 제공하는 Java용 라이브러리입니다. Guava에는 위 목록에 설명된 형식에 따라 데이터를 저장하는 데 사용할 수 있는 ImmutableMultimap이 포함됩니다.

ImmutableMultimap은 Java 8 인라인 함수 구문과 함께 guava 라이브러리의 Splitter와 함께 사용되어 문자가 있는 입력 번호에서 전화 번호를 생성합니다.

Google Guava 라이브러리가 환경에 추가되었는지 확인하십시오. 위의 시나리오를 기반으로 예제를 구현해 보겠습니다.

package delftstack;

import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.Lists;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;

public class Example {
  public static void main(String[] args) {
    ImmutableMultimap<String, String> Translate_PhoneNumber =
        new ImmutableMultimap.Builder<String, String>()
            .putAll("2", Lists.<String>newArrayList("A", "B", "C"))
            .putAll("3", Lists.<String>newArrayList("D", "E", "F"))
            .putAll("4", Lists.<String>newArrayList("G", "H", "I"))
            .putAll("5", Lists.<String>newArrayList("J", "K", "L"))
            .putAll("6", Lists.<String>newArrayList("M", "N", "O"))
            .putAll("7", Lists.<String>newArrayList("P", "Q", "R", "S"))
            .putAll("8", Lists.<String>newArrayList("T", "U", "V"))
            .putAll("9", Lists.<String>newArrayList("W", "X", "Y", "Z"))
            .build();
    // Get the user input
    Scanner Input_PhoneNumber = new Scanner(System.in);
    System.out.print("Enter a phone number with the format (123-XXX-XXXX): ");

    // Put the phone number into a string
    String Phone_Number = Input_PhoneNumber.nextLine();
    // close scanner
    Input_PhoneNumber.close();

    // Use Guava Splitter
    List<String> Converted_PhoneNumber =
        Splitter.fixedLength(1)
            .splitToList(Phone_Number)
            .stream()
            .map(t -> {
              if (Character.isAlphabetic(t.codePointAt(0))) {
                return Translate_PhoneNumber.inverse().get(t).asList().get(0);
              } else {
                return t;
              }
            })
            .collect(Collectors.toList());

    System.out.println(String.join("", Converted_PhoneNumber));
  }
}

위의 코드는 먼저 표준 시나리오를 기반으로 문자 및 숫자 정보로 ImmutableMultimap을 생성한 다음 Java 8 인라인 함수 구문과 함께 Splitter를 사용하여 알파벳 전화 번호를 변환합니다. 출력 참조:

Enter a phone number with the format (123-XXX-XXXX): 444-CAT-GOOD
444-228-4663