Grails 是否可以通过编程区分美国和加拿大的电话号码?
我正在使用这段代码(在Groovy中,但应该非常清楚它的作用) 运行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,它完全
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"