迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Java 字母电话号码转换器

作者:迹忆客 最近更新:2023/08/06 浏览次数:

本文介绍如何用 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

基于上述场景,我们可以创建一个从字母电话号码到数字的电话号码转换器。 这可以通过不同的方法来实现。


使用正则表达式和 switch 语句生成字母电话号码转换器

Regex 是 Java 中的一个包,用于匹配给定的模式,因此如果标准电话号码格式是 123-XXX-XXXX,则该号码的正则表达式模式将为 [0-9]{3}-[a- zA-Z]{3}-[a-zA-Z]{4},用于将输入的电话号码与标准格式进行匹配。

Switch 语句可用于生成根据上面列表中提供的字母和数字将数字添加到电话号码字符串中的情况。 让我们尝试实现这个例子:

package jiyik;

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

上面的代码包含三个方法,第一个是主方法,第二个是根据正则表达式方法验证电话号码的方法,第三个是翻译电话号码的方法。 查看输出:

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 将与 guava 库中的 Splitter 一起使用 Java 8 内联函数语法,从带有字母的输入号码生成电话号码。

确保 Google Guava 库已添加到您的环境中。 我们尝试根据上述场景实现一个示例:

package jiyik;

import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;

import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.Lists;

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

上一篇:Java中的并发队列实现

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Java中的并发队列实现

发布时间:2023/08/06 浏览次数:69 分类:Java

本文将讨论 Java 中并发队列的一些最有效的实现以及需要利用哪些实现。Java 中的并发队列 首先,我们来讨论所有三个队列。Java ConcurrentLinkedQueue、Java ArrayBlockingQueue、Java LinkedBlockingQueue

Java 中的闭包

发布时间:2023/08/06 浏览次数:140 分类:Java

本文将详细讨论闭包并提供必要的示例和解释以使该主题更容易。在开始讨论之前,让我们先看看闭包的一般语法,如下所示。Java 中的闭包 在下面的示例中,我们将说明最基本的闭包,其中我

在 Java 中使用带有 Jackson 的自定义序列化器

发布时间:2023/08/05 浏览次数:80 分类:Java

本文将介绍如何在 Java 中使用 Jackson 的自定义序列化器。 首先,我们来了解一下序列化的概念。Java 中的序列化 Java 中的序列化过程是一种将对象与字节流相互转换的技术。 这不仅可以将对象

Java 中的 Trie 数据结构

发布时间:2023/08/05 浏览次数:111 分类:Java

本文介绍了 Java 中的 Trie 数据结构。Java 中的 Trie 数据结构 Trie 词是从单词 Retrieval 中提取出来的,它是一种用于存储字符串集合的排序数据结构。

JAVA_OPTS 环境变量

发布时间:2023/08/05 浏览次数:199 分类:Java

JAVA_OPTS 是一个环境变量,用于将自定义设置传递给 Java 虚拟机。 本文介绍了 JAVA_OPTS 的使用。JAVA_OPTS 环境变量 JAVA_OPTS 是一个标准环境变量,用于设置 Java 虚拟机的自定义设置。

在Ubuntu中设置JAVA_HOME环境路径

发布时间:2023/08/05 浏览次数:154 分类:Java

本文将介绍如何在Ubuntu中设置Java环境路径。 Ubuntu 将 openjdk6 安装到 /usr/lib/jvm/java-6-openjdk 路径。

在 Ubuntu 中使用 OpenJDK 安装 Java

发布时间:2023/08/05 浏览次数:179 分类:Java

在本文中,我们将学习如何在 Ubuntu 20.04 中安装 Java。 它还说明了如何安装默认 Java、特定 Java 版本以及设置环境变量。在 Ubuntu 中使用 OpenJDK 安装 Java 在本文中,我们将使用 OpenJDK 安装 Java。

使用 Brew 安装 Java

发布时间:2023/08/05 浏览次数:66 分类:Java

本文将展示如何使用 BREW 安装 Java。什么是 BREW 和 HOMEBREW? 使用 BREW 安装 Java 需要什么? 答案就在这篇文章中,所以让我们立即开始吧。

Java 中的尖括号

发布时间:2023/08/05 浏览次数:167 分类:Java

本文介绍什么是 Java 中的尖括号 (<>) 以及如何使用它。Java 中的尖括号 (<>) 让我们举个例子; 我们有一个名为 Delftstack 的类,

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便