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
基于上述场景,我们可以创建一个从字母电话号码到数字的电话号码转换器。 这可以通过不同的方法来实现。
使用正则表达式和 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中的并发队列实现
发布时间:2023/08/06 浏览次数:69 分类:Java
-
本文将讨论 Java 中并发队列的一些最有效的实现以及需要利用哪些实现。Java 中的并发队列 首先,我们来讨论所有三个队列。Java ConcurrentLinkedQueue、Java ArrayBlockingQueue、Java LinkedBlockingQueue
在 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 的类,