Alphabetischer Telefonnummernübersetzer in Java
- Alphabetischer Telefonnummernübersetzer in Java
-
Verwenden Sie
regex
und dieswitch
-Anweisung, um einen alphabetischen Telefonnummernübersetzer zu generieren - Verwenden Sie Google Guava, um einen alphabetischen Telefonnummernübersetzer zu generieren
Dieses Tutorial zeigt, wie Sie einen alphabetischen Telefonnummernübersetzer in Java generieren.
Alphabetischer Telefonnummernübersetzer in Java
Manchmal verwenden die Unternehmen das Telefonnummernformat wie 555-GET-FOOD
, bei dem es sich um einen standardisierten Prozess zum Schreiben einer Telefonnummer handelt, damit sie sich der Kunde leichter merken kann. Die Standardversion des Letter to Numbers für die Telefonnummern ist:
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
Basierend auf dem obigen Szenario können wir einen Telefonnummernübersetzer von alphabetischen Telefonnummern in Zahlen erstellen. Dies kann über verschiedene Methoden erreicht werden.
Verwenden Sie regex
und die switch
-Anweisung, um einen alphabetischen Telefonnummernübersetzer zu generieren
Der Regex
ist ein Paket in Java, das verwendet wird, um das angegebene Muster abzugleichen. Wenn also das Standard-Telefonnummernformat 123-XXX-XXXX
ist, lautet das Regex-Muster für diese Nummer [0-9]{3}-[a-zA-Z]{3}-[a-zA-Z]{4}
, das verwendet wird, um die eingegebene Telefonnummer mit dem Standardformat abzugleichen.
Die Anweisung Switch
kann verwendet werden, um Fälle zu generieren, in denen eine Nummer zur Telefonnummernzeichenfolge basierend auf Buchstaben und Zahlen in der obigen Liste hinzugefügt wird. Versuchen wir, dieses Beispiel umzusetzen:
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;
}
}
Der obige Code enthält drei Methoden, die erste ist die Hauptmethode, die zweite ist die Methode zum Validieren der Telefonnummer gemäß der Regex-Methode und die dritte dient zum Übersetzen der Telefonnummer. Siehe die Ausgabe:
Please enter a Phone number with the format: (123-XXX-XXXX)
444-CAT-GOOD
123-228-4663
Wie wir sehen können, wird die Telefonnummer 444-CAT-GOOD
in 123-228-4663
übersetzt.
Verwenden Sie Google Guava, um einen alphabetischen Telefonnummernübersetzer zu generieren
Google Guava ist eine Bibliothek für Java, die viele Operationen bereitstellt. Guava
enthält ImmutableMultimap
, mit dem die Daten nach dem in der obigen Liste beschriebenen Format gespeichert werden können.
Diese ImmutableMultimap
wird dann mit dem Splitter
aus der Guava-Bibliothek mit der Java-8-Inline-Funktionssyntax verwendet, um aus der eingegebenen Zahl mit Buchstaben eine Telefonnummer zu generieren.
Stellen Sie sicher, dass die Google Guava-Bibliothek zu Ihrer Umgebung hinzugefügt wurde. Versuchen wir, ein Beispiel basierend auf dem obigen Szenario zu implementieren:
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));
}
}
Der obige Code erstellt zuerst eine ImmutableMultimap
mit den Informationen von Buchstabe und Zahl basierend auf dem Standardszenario und verwendet dann den Splitter
mit Java 8-Inline-Funktionssyntax, um die alphabetische Telefonnummer zu übersetzen. Siehe Ausgabe:
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