libphonenumber需要电话号码和国家/地区名称作为参数 验证电话号码。
PhoneNumber numberProto = phoneUtil.parse("044 668 18 00", "CH");
System.out.println(numberProto);
System.out.println("is valid: "+phoneUtil.isValidNumber(numberProto));
我可以使用正则表达式从文本文档中找到电话号码,但不能找到与该特定电话号码相关联的国家/地区名称。
请建议我从文本中找到有效的电话号码。
示例输入:
..some text.. first number +13478093374 ..some text..
some new text.. second number.. +91 774-5001-827 ..some text.
some new text.. third number.. 044 668 18 00 ..some text.
some new text.. forth number.. 020-2689-0455 ..some text.
所以各自的输出应该是,
phoneUtil.parse("044 668 18 00", "CH") //valid
phoneUtil.parse("+91 774-5001-827", "IN") //valid
phoneUtil.parse("+13478093374", "US") //valid
phoneUtil.parse("020-2689-0455", "IN") //valid
请建议添加国家/地区参数的算法。
答案 0 :(得分:0)
您可以像这样使用正则表达式:
"(\d\d\d)-(\d\d\d\d)-(\d\d\d)\s"
然后使用这样的代码:
Pattern pattern = Pattern.compile("(\\d\\d\\d)-(\\d\\d\\d\\d)-(\\d\\d\\d)\\s");
String phoneNumber = "";
String text = "..some text.. valid number 774-0000-827 ..some text..";
Matcher matcher = pattern.matcher(text);
if (matcher.find())
{
phoneNumber += matcher.group(1) + " ";
phoneNumber += matcher.group(2) + " ";
phoneNumber += matcher.group(3) + " ";
PhoneNumber numberProto = phoneUtil.parse(phoneNumber, "CH");
System.out.println(numberProto);
System.out.println("is valid: "+ phoneUtil.isValidNumber(numberProto));
}