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 ...
随机推荐
- DataGridView1列宽根据内容自适应
DataGridView1列宽根据内容自适应 在使用DataGridView控件时,要使列宽根据内容自适应,你可以使用DataGridView的AutoResizeColumns方法.这个方法允许你根 ...
- 第十节 JMeter基础-初级购物车【接口关联-鉴权】
声明:本文所记录的仅本次操作学习到的知识点,其中商城IP错误,请自行更改. 背景:商城购物车可以添加数据,也可以删除数据. 思路: 登录后添加购物车,加入成功后查看购物车列表. 购物车列表,随机删除, ...
- 手把手教你集成GraphRag.Net:打造智能图谱搜索系统
在人工智能和大数据发展的背景下,我们常常需要在项目中实现知识图谱的应用,以便快速.准确地检索和使用信息. 今天,我将向大家详细介绍如何在一个新的.NET项目中集成GraphRag.Net,这是一个参考 ...
- 实验6-使用TensorFlow完成线性回归 cannot import name ‘OrderedDict‘ from ‘typing‘错误的解决方法
找到对应的报错方法 删除 再添加from typing_extensions import OrderedDict
- 云计算:Docker-compose快速部署前后端项目
| 更好的观看效果请前往,原文博客地址:https://www.zeker.top/posts/338829e1/ 介绍 Docker Compose 是官方编排的项目之一,负责快速的部署分布式应用. ...
- 1、SpringMVC简介
1.1.MVC 概述 MVC:是一种软件架构的思想,将软件按照模型.视图.控制器来划分: M( Model ):模型层,指工程中的 JavaBean ,作用是处理数据: V( View ):视图层,指 ...
- 【Git】03 撤销 & 版本回退
回退分为三种情况,每种情况对应了我们文件的存储区域 工作区 | 暂存区 | 版本区(当前分支) 1.文件可能存放在工作区,没有被Git追踪[红色标记状态] 2.文件可能已经添加到暂存区,没有被Git提 ...
- C语言编写Linux终端环境下无缓冲键盘输入 ,并识别上下左右光标键
自己重构了游戏<2048>并且重构了它的最好启发式AI解法,并上传到了Gitee中的 鬼&泣 / 2048-heuristic的devilmaycry分支,在这个过程中编写了一个C ...
- Salesforce Sales Cloud 零基础学习(五) My Labels的使用
本篇参考: https://help.salesforce.com/s/articleView?id=sf.sales_core_record_labels.htm&type=5 在公司中,S ...
- SMU Summer 2024 Contest Round 1
SMU Summer 2024 Contest Round 1 Dice and Coin 题意 给个 n 面骰子和一枚硬币,初始投骰子,若骰子的值在 1 到 \(K-1\) 之间则反复投硬币,硬币为 ...