任务:实现在控制台输入电话号码时去除冗余值,并检查该号码是否与俄罗斯手机号码的格式匹配。如果输入的字符串无法转换为手机号码格式,则显示无效输入信息。电话不仅可以输入格式 79091234567,还可以输入其他字符。 输入值和程序输出结果示例
结果,当在控制台中输入电话号码时,在提供的代码中,可以为所有建议的选项实现删除冗余值的条件,除了:9-453-1234567。
*我不知道在哪里以及如何编写正确测试测试的条件。导致测试失败的错误是一个以 9 开头的 11 位数字。根据任务的情况,这样的输入,应该会显示“无效的数字格式”。在我的情况下,有一个数字的转换。
示例 9-453-1234567(它应该显示“无效的数字格式”),但它显示“74531234567”
编码:
package practice.regex;
import java.util.Scanner;
public class PhoneCleanerRegex {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
String input = scanner.nextLine();
if (input.equals("0")) {
scanner.close();
break;
}
// TODO:напишите ваш код тут, результат вывести в консоль.
String regex = "[^0-9]";
String phoneNumber = input.replaceAll(regex, "");
if (phoneNumber.length() > 11 || phoneNumber.length() < 10) {
System.out.println("Неверный формат номера");
break;
} else {
if ((phoneNumber.charAt(0) == '8') || (phoneNumber.length() != 10)) {
phoneNumber = phoneNumber.replaceFirst("[0-9]{1}", "7");
System.out.println(phoneNumber);
break;
}
if (phoneNumber.length() == 10) {
System.out.println("7" + phoneNumber);
} else {
System.out.println(phoneNumber);
}
break;
}
}
}
}
