Grails 是否可以通过编程区分美国和加拿大的电话号码?

Grails 是否可以通过编程区分美国和加拿大的电话号码?,grails,groovy,libphonenumber,Grails,Groovy,Libphonenumber,我正在使用这段代码(在Groovy中,但应该非常清楚它的作用) 运行mobileNumberUtilService.getISOCountryCode(“”)返回[US、AG、AI、AS、BB、BM、BS、CA、DM、DO、GD、GU、JM、KN、KY、LC、MP、MS、PR、SX、TC、TT、VC、VG、VI] 除了某种web服务查找之外,还有什么方法可以区分这些吗?看看libphonenumber的geocoder子项目。它提供了一个phoneNumberOfFlinegeCoder,它完全

我正在使用这段代码(在Groovy中,但应该非常清楚它的作用)

运行
mobileNumberUtilService.getISOCountryCode(“”)
返回
[US、AG、AI、AS、BB、BM、BS、CA、DM、DO、GD、GU、JM、KN、KY、LC、MP、MS、PR、SX、TC、TT、VC、VG、VI]


除了某种web服务查找之外,还有什么方法可以区分这些吗?

看看libphonenumber的geocoder子项目。它提供了一个
phoneNumberOfFlinegeCoder
,它完全满足您的需求:

@Grapes([
  @Grab('com.googlecode.libphonenumber:libphonenumber:5.8'),
  @Grab('com.googlecode.libphonenumber:geocoder:2.9')
])

import com.google.i18n.phonenumbers.PhoneNumberUtil
import com.google.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder

def phoneNumberUtil = PhoneNumberUtil.instance
def geocoder = PhoneNumberOfflineGeocoder.instance
def usaNum = phoneNumberUtil.parse("1-406-750-9999", "US")
def canNum = phoneNumberUtil.parse("1-416-750-9999", "US")

assert geocoder.getCountryNameForNumber(usaNum, Locale.default) ==
    "United States"
assert geocoder.getCountryNameForNumber(canNum, Locale.default) ==
    "Canada"

非常有帮助,谢谢。我真正想要的是ISO代码。看起来你可以从
PhoneNumberUtil.getRegionDeforNumber()
获得ISO代码。我实际上是回来发帖说我发现了这一点:)我不知道我怎么会错过它。它就在JavaDocs中。
@Grapes([
  @Grab('com.googlecode.libphonenumber:libphonenumber:5.8'),
  @Grab('com.googlecode.libphonenumber:geocoder:2.9')
])

import com.google.i18n.phonenumbers.PhoneNumberUtil
import com.google.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder

def phoneNumberUtil = PhoneNumberUtil.instance
def geocoder = PhoneNumberOfflineGeocoder.instance
def usaNum = phoneNumberUtil.parse("1-406-750-9999", "US")
def canNum = phoneNumberUtil.parse("1-416-750-9999", "US")

assert geocoder.getCountryNameForNumber(usaNum, Locale.default) ==
    "United States"
assert geocoder.getCountryNameForNumber(canNum, Locale.default) ==
    "Canada"