gpt4 book ai didi

grails - 是否可以以编程方式区分美国和加拿大的电话号码?

转载 作者:行者123 更新时间:2023-12-02 08:43:53 24 4
gpt4 key购买 nike

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

class MobileNumberUtilService {
def getISOCountryCode(rawNumber) {
def phoneNumberUtil = PhoneNumberUtil.getInstance()
def number

try {
number = phoneNumberUtil.findNumbers(rawNumber, null).iterator().next().number()
} catch (NoSuchElementException exception) {
return ''
}

CountryCodeToRegionCodeMap.countryCodeToRegionCodeMap[number.countryCode].first()
}
}

正在运行mobileNumberUtilService.getISOCountryCode('<internationalized American or Canadian number>')返回[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] .

除了某种网络服务查找之外,有什么方法可以区分它们吗?

最佳答案

看一下 libphonenumber 的地理编码器子项目。它提供了一个 PhoneNumberOfflineGeocoder ,它完全可以满足您的需求:

@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"

关于grails - 是否可以以编程方式区分美国和加拿大的电话号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19682536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com