Traductor alfabético de números de teléfono en Java
- Traductor alfabético de números de teléfono en Java
-
Use
regex
y la instrucciónswitch
para generar un traductor alfabético de números de teléfono - Use Google Guava para generar un traductor alfabético de números de teléfono
Este tutorial demuestra cómo generar un traductor alfabético de números de teléfono en Java.
Traductor alfabético de números de teléfono en Java
A veces, las empresas utilizan el formato de número de teléfono como 555-GET-FOOD
, que es un proceso estandarizado de escribir un número de teléfono para que sea más fácil de recordar para el cliente. La versión estándar de la letra a números para los números de teléfono es:
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
Según el escenario anterior, podemos crear un traductor de números de teléfono de números de teléfono alfabéticos a números. Esto se puede lograr a través de diferentes métodos.
Use regex
y la instrucción switch
para generar un traductor alfabético de números de teléfono
Regex
es un paquete en Java que se usa para hacer coincidir el patrón dado, por lo que si el formato de número de teléfono estándar es 123-XXX-XXXX
, el patrón de expresión regular para este número será [0-9]{3 }-[a-zA-Z]{3}-[a-zA-Z]{4}
, que se utilizará para hacer coincidir el número de teléfono de entrada con el formato estándar.
La instrucción Cambiar
se puede utilizar para generar casos en los que se agregará un número a la cadena de números de teléfono en función de las letras y los números proporcionados en la lista anterior. Intentemos implementar este ejemplo:
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;
}
}
El código anterior contiene tres métodos, el primero es el método principal, el segundo es el método para validar el número de teléfono según el método regex y el tercero es traducir el número de teléfono. Ver la salida:
Please enter a Phone number with the format: (123-XXX-XXXX)
444-CAT-GOOD
123-228-4663
Como podemos ver, el número de teléfono 444-CAT-GOOD
se traduce como 123-228-4663
.
Use Google Guava para generar un traductor alfabético de números de teléfono
Google Guava es una biblioteca para Java que proporciona muchas operaciones. Guava
incluye ImmutableMultimap
, que se puede utilizar para almacenar los datos según el formato descrito en la lista anterior.
Este ImmutableMultimap
luego se usará con el Splitter
de la biblioteca guava con la sintaxis de función en línea de Java 8 para generar un número de teléfono a partir del número de entrada con letras.
Asegúrese de que la biblioteca de Google Guava se agregue a su entorno. Intentemos implementar un ejemplo basado en el escenario anterior:
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));
}
}
El código anterior primero crea un ImmutableMultimap
con la información de la letra y el número según el escenario estándar y luego usa el Splitter
con la sintaxis de la función en línea de Java 8 para traducir el número de teléfono alfabético. Ver salida:
Enter a phone number with the format (123-XXX-XXXX): 444-CAT-GOOD
444-228-4663
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook