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
위의 시나리오를 기반으로 알파벳 전화 번호에서 숫자로 전화 번호 변환기를 만들 수 있습니다. 이는 다른 방법을 통해 달성할 수 있습니다.
regex 및 switch 문을 사용하여 알파벳 전화 번호 변환기 생성
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