【问题标题】:libphonenumber library does not extract phone numbers with prefix +34 (0)libphonenumber 库不提取前缀为 +34 (0) 的电话号码
【发布时间】:2020-01-29 10:19:04
【问题描述】:

我正在使用 libphonenumber 从给定的字符串中提取电话号码,但它无法提取带有“+34 (0)”前缀的号码(+34 前缀可以正常工作)。它适用于其他扩展(即:- +38 (0) )。看起来它与 +34 和 (0) 模式相结合。以下是代码示例。有没有人经历过这种情况?

String content = someString + "+34 (0)xxx - xxxxxx" + someString;
PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
Iterable<PhoneNumberMatch> intlNumbers = phoneNumberUtil.findNumbers(content, null);

【问题讨论】:

  • 你能告诉我们你的代码吗?
  • @MehrdadHosseinNejad 当然,用代码示例更新了问题

标签: java phone-number libphonenumber


【解决方案1】:

你可以使用parse方法然后得到nationalNumbercountryCode

 public static void main(String[] args) throws NumberParseException {


    String content = "+34 (0)123 - 456789";
    PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
    PhoneNumber phoneNumber =phoneNumberUtil.parse(content, null);
    System.out.println("Phone Number  = "+phoneNumber.getNationalNumber());
    System.out.println("Country Code = "+phoneNumber.getCountryCode());


}

结果

电话号码 = 123456789

国家代码 = 34

【讨论】:

  • 是的。它适用于phoneNumberUtil.parse 方法,内容应仅包含所需的电话号码。在我的情况下,内容是 someString + "+34 (0)xxx - xxxxxx" + someString。并且内容将有多个数字。这就是为什么我使用phoneNumberUtil.findNumber 方法,它无法解析该特定数字。
  • someString 是什么意思,能给我举个例子吗?
  • 例如,“abc +49 (0)xxx - xxxxxx def +34 (0)xxx - xxxxxx ghi”
  • 啊哈!并且您想从您的字符串中获取49xxx-xxxxx34xxx-xxxx
  • 这是 ("test +49 (0)123 - 45678 test +34 (0)123 - 45634 test" ) 您的场景示例吗?
【解决方案2】:

Telephone numbers in Spain 表明 0 应该是 6 或 7。我认为不是住在西班牙。

【讨论】:

  • 更具体地说,如果我正确阅读该页面,西班牙数字有 no 可选前缀。在西班牙,手机号码是6xx xxx xxx7xx xxx xxx,(普通)固定电话号码是8xx xxx xxx9xx xxx xxx。在西班牙以外,这些都是+34 6xx xxx xxx等。
  • @Malith 为避免混淆,我评论的是 Joop 的回答,而不是您的评论(我们几乎同时发表评论)。
  • @TripeHound 是的,令人惊讶的是关于“(0)”的那些假设,在道路的右侧(没有错误)行驶,12.34.567 = 2-3 千个分隔符。而且图书馆的质量似乎非常高。
猜你喜欢
  • 2013-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多