ASP.NET Core Library – Google libphonenumber (Country Dial Code)
前言
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
Parse 失败会报错,所以需要 try catch,即便 Parse 成功也代表就是 valid number,所以还得验证多一次哦。
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
ASP.NET Core Library – Google libphonenumber (Country Dial Code)的更多相关文章
- ASP.NET Core 使用 Google 验证码(reCAPTCHA v3)代替传统验证码
写在前面 友情提示: Google reCAPTCHA(v3下同) 的使用不需要"梯子",但申请账号的时候需要! Google reCAPTCHA 的使用不需要"梯子&q ...
- ASP.NET Core 使用 Google 验证码(Google reCAPTCHA)
关心最多的问题,不FQ能不能用,答案是能.Google官方提供额外的域名来提供服务,国内可以正常使用. 一. 前言 验证码在我们实际的生活场景中非常常见,可以防止恶意破解密码.刷票.论坛灌水.刷注册等 ...
- Create an ASP.NET Core web app in Visual Studio Code
https://www.microsoft.com/net/core#windowscmd https://download.microsoft.com/download/B/9/F/B9F1AF57 ...
- [转]ASP.NET Core 1 Deploy to IIS
本文转自: http://webmodelling.com/webbits/aspnet/aspnet-deploy-iis.aspx 15 Sep 2016. This tutorial will ...
- 《ASP.NET Core 高性能系列》致敬伟大的.NET斗士甲骨文!
写在开始 三年前,曾写过一篇文章:从.NET和Java之争谈IT这个行业,当时遭到某些自认为懂得java就了不起的Javaer抨击, 现在可以致敬伟大的.NET斗士甲骨文了 (JDK8以上都需要收费, ...
- ASP.NET Core 介绍
原文:Introduction to ASP.NET Core 作者:Daniel Roth.Rick Anderson.Shaun Luttin 翻译:江振宇(Kerry Jiang) 校对:许登洋 ...
- 【翻译】在Mac上使用VSCode创建你的第一个Asp.Net Core应用
Setting Up Your Development Environment 设置你的开发环境 To setup your development machine download and inst ...
- 005.Getting started with ASP.NET Core MVC and Visual Studio -- 【VS开发asp.net core mvc 入门】
Getting started with ASP.NET Core MVC and Visual Studio VS开发asp.net core mvc 入门 2017-3-7 2 分钟阅读时长 本文 ...
- ASP.NET Core 2.0 自定义 _ViewStart 和 _ViewImports 的目录位置
在 ASP.NET Core 里扩展 Razor 查找视图目录不是什么新鲜和困难的事情,但 _ViewStart 和 _ViewImports 这2个视图比较特殊,如果想让 Razor 在我们指定的目 ...
- User Authentication with Angular and ASP.NET Core
User authentication is a fundamental part of any meaningful application. Unfortunately, implementing ...
随机推荐
- Web1.0、Web2.0 和 Web3.0 的区别
Web1.0.Web2.0 和 Web3.0 的区别主要体现在以下几个关键方面: 内容创作与交互: Web1.0:内容主要由网站所有者或少数专业人员创建,用户大多只是被动接收信息.例如,早期的雅虎.新 ...
- Django集成的密码找回功能
要实现忘记密码功能,您需要进行以下修改: 添加忘记密码链接到登录页面. 创建密码丢失修改页面. 创建密码修改页面. 编写相应的视图函数来处理密码丢失修改和密码修改逻辑. 编写发送验证信息到邮箱的逻辑. ...
- 阅读翻译Prompting Engineering Guides之Introduction(提示工程简介)
阅读翻译Prompting Engineering Guides之Introduction(提示工程简介) 关于 首次发表日期:2024-07-19 Prompting Engineering Gui ...
- NAS使用
openwrt下的samba设置 - 百度文库 (baidu.com) openwrt下 samba设置 (wjhsh.net) opkg updateopkg install shadow-user ...
- Django 解决跨域访问API失败问题
解决跨域访问API失败问题 By:授客 QQ:103355122 实践环境 Win 10 Python 3.5.4 Django-2.0.13.tar.gz 官方下载地址: https://w ...
- SpringBoot实战:Spring Boot接入Security权限认证服务
引言 Spring Security 是一个功能强大且高度可定制的身份验证和访问控制的框架,提供了完善的认证机制和方法级的授权功能,是一个非常优秀的权限管理框架.其核心是一组过滤器链,不同的功能经由不 ...
- 关于npm ERR! 的一个解决方案
最近在网上找了一个js写的项目,npm下载某些组件总是失败,后经学习了解到了cnpm.使用cnpm时就都可以正常下载,但是下载完成之后程序无法正常启动,所以cnpm下载也是失败的. 后面我经过自己手动 ...
- 【SQL】 去掉最后一段,只保留前段
需求描述: 例如给出这样一个地址或者其他字符: 10.11.12.13 192.168.177.209101.102.103.104.105 ... 要求只保留前面的部分,去掉最后一部分 10.11. ...
- 【MySQL】01 概念与介绍
视频节选自 :P1 - P7 https://www.bilibili.com/video/BV1xW411u7ax 用户浏览的页面 - 服务器 - 数据库 所有访问的本质的东西,就是访问数据,数据 ...
- 【RabbitMQ】07 SpringBoot整合RabbitMQ
生产者和消费者的依赖基本一致: 注意工程名称不是一样的 <?xml version="1.0" encoding="UTF-8"?> <pro ...