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;
  }
}

上記のコードには 3つのメソッドが含まれています。1つ目はメイン メソッド、2つ目は正規表現メソッドに従って電話番号を検証するメソッド、3つ目は電話番号を変換するメソッドです。 出力を参照してください。

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

ご覧のとおり、電話番号 444-CAT-GOOD123-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