ASP.NET Core Library – Google libphonenumber (Country Dial Code)
2023-09-27 14:23:55 时间
前言
Google libphonenumber 是 Java 的, ASP.NET Core 只是 port 过去而已.
以前在 angular2 学习笔记 ( translate, i18n 翻译 ) 有介绍过. 但后来就一直没怎么用过了.
参考
Github – Google libphonenumber
Github – libphonenumber-csharp
Stack Overflow – Listing all country codes of phone numbers
相关链接
Github – CountryCodes.json (JSON)
geonames.org (API)
Wikipedia – List of country calling codes
nuget 安装
dotnet add package libphonenumber-csharp
基本操作
Get Phone Number Information
var singaporeNumber = "+6590269356"; var phoneUtil = PhoneNumberUtil.GetInstance(); PhoneNumber number = phoneUtil.Parse(singaporeNumber, defaultRegion: ""); var regionCode = phoneUtil.GetRegionCodeForNumber(number); // SG var isValidNumber = phoneUtil.IsValidNumber(number); var internationalFormat = phoneUtil.Format(number, PhoneNumberFormat.INTERNATIONAL); //+65 9026 9356 var localFormat = phoneUtil.Format(number, PhoneNumberFormat.NATIONAL); // 9026 9356
当获取到一个用户输入的号码, 我们可以通过 PhoneNumberUtil 检查它是否 valid, 是属于什么国家, 还可以获取它的正规格式.
-RegionCode 指的是 Country String Code, 比如 Malaysia = MY, Singapore = SG
-CountryCode 指的是 Dial Code, 比如 Malaysia = 60, Singapore = 65
Get All Code List Information
var phoneUtil = PhoneNumberUtil.GetInstance(); List<int> countryCodes = phoneUtil.GetSupportedCallingCodes().ToList(); // e.g. 60, 65 foreach (var countryCode in countryCodes) { var regionCode = phoneUtil.GetRegionCodeForCountryCode(countryCode); // e.g. MY, SG try { var countryName = new Locale("", regionCode).GetDisplayCountry("en"); // e.g. Malaysia, Singapore } catch { // 247, 599, 211, 383, 800, 808, 870, 878, 881, 882, 883, 888, 979 // 上面这些 CountryCode/DialCode 的 RegionCode 对不上任何国家...我不知道为什么, 但 Wikipedia 也找不到这些 DialCode noCountryNames.Add(countryCode); } }
上面是拿 country code / dial code > 转去 region code > 获取 country name
先拿 region code > 转去 country code 也可以
var regionCodes = phoneUtil.GetSupportedRegions(); // e.g. MY, SG var countryCode = phoneUtil.GetCountryCodeForRegion("MY"); // 60
相关文章
- 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生
- MVC的验证(模型注解和非侵入式脚本的结合使用) .Net中初探Redis .net通过代码发送邮件 Log4net (Log for .net) 使用GDI技术创建ASP.NET验证码 Razor模板引擎 (RazorEngine) .Net程序员应该掌握的正则表达式
- Google Earth Engine(GEE)——Map.style()让你把光标编程十字线
- Google Earth Engine(GEE)——使用export函数下载影像时注意的需要注意的问题
- Google Earth Engine(GEE) ——统一的全球关键基础设施和指数(CISI)数据集
- Google Earth Engine——该数据集是2018年30米分辨率的中国梯田分布地图。它是通过使用基于谷歌地球引擎平台的多源和多时空数据进行基于像素的监督性分类开发的。
- Google Earth Engine——2004-2010年时间平均基线的月度引力异常值,该数据集所包含的数据是以 “等水厚度 “为单位,以厘米为单位表示水的垂直范围的质量偏差
- Google Earth Engine ——FLDAS: 发展中国家的粮食安全评估数据集
- Google Earth Engine ——MCD43A3 V6反照率模型数据集是一个每天16天的产品。它提供了MODIS表面反射波段(波段1到波段7)以及3个宽光谱波段(可见光、近红外和短波)
- Sina App Engine与Google App Engine区别对比
- google translator 0.2
- Google称赛门铁克发布了3万个错误证书 将限制访问
- 谷歌聊天乱象持续:12年历史的Google Talk被关闭