迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > 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

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

本文地址:

相关文章

如何在 Java 中延迟几秒钟的时间

发布时间:2023/12/17 浏览次数:217 分类:Java

本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。

如何在 Java 中把 Hashmap 转换为 JSON 对象

发布时间:2023/12/17 浏览次数:187 分类:Java

它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。

如何在 Java 中按值排序 Map

发布时间:2023/12/17 浏览次数:171 分类:Java

本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map 进行排序,并列出了一些示例代码来理解它。

如何在 Java 中打印 HashMap

发布时间:2023/12/17 浏览次数:192 分类:Java

本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。

在 Java 中更新 Hashmap 的值

发布时间:2023/12/17 浏览次数:146 分类:Java

本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。

Java 中的 hashmap 和 map 之间的区别

发布时间:2023/12/17 浏览次数:79 分类:Java

本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,

在 Java 中获取用户主目录

发布时间:2023/12/17 浏览次数:218 分类:Java

这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。

Java 中 size 和 length 的区别

发布时间:2023/12/17 浏览次数:179 分类:Java

这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。

Java 中的互斥锁

发布时间:2023/12/17 浏览次数:111 分类:Java

了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便