Alphabetischer Telefonnummernübersetzer in Java

Sheeraz Gul 12 Oktober 2023
  1. Alphabetischer Telefonnummernübersetzer in Java
  2. Verwenden Sie regex und die switch-Anweisung, um einen alphabetischen Telefonnummernübersetzer zu generieren
  3. Verwenden Sie Google Guava, um einen alphabetischen Telefonnummernübersetzer zu generieren
Alphabetischer Telefonnummernübersetzer in Java

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 Gul avatar Sheeraz Gul avatar

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