php 国际手机号码格式,C# 国际手机号类封装 - 使用nuget Global Phone 解析国际手机号...

1. package-install GlobalPhone

2. Phone.cs聽

聽 聽public class Phone

{

public string CountryCode { get; set; }

public string InternationalNumber { get; set; }

public string NationalNumber { get; set; }

public string Territory { get; set; }

public bool IsValid { get; set; }

public Phone()

{

}

private Phone(global::GlobalPhone.Number number)

: this()

{

CountryCode = number.CountryCode;

InternationalNumber = number.InternationalString;

NationalNumber = number.NationalFormat;

Territory = number.Territory.Name;

IsValid = number.IsValid;

}

private static bool __libraryLoaded;

private static global::GlobalPhone.Database __databse;

private static void LoadStaticContent()

{

if (!__libraryLoaded)

{

try

{

var assembly = Assembly.GetExecutingAssembly();

var dataStream = assembly.GetManifestResourceStream("Common.GlobalPhone.data.json");

if (dataStream != null)

{

var reader = new StreamReader(dataStream);

var text = reader.ReadToEnd();

global::GlobalPhone.GlobalPhone.DbText = text;

__databse = global::GlobalPhone.Database.Load(text);

}

}

catch (Exception ex)

{

throw;

}

__libraryLoaded = true;

}

}

private static readonly object __globalPhoneLock = new object();

private static global::GlobalPhone.Region TrnaslateRegion(String countryCode)

{

if (string.IsNullOrEmpty(countryCode))

{

return null;

}

lock (__globalPhoneLock)

{

return __databse.TryGetRegion(countryCode);

}

}

private static global::GlobalPhone.Territory TranslateTerritory(String territoryName)

{

if (string.IsNullOrEmpty(territoryName))

{

return null;

}

lock (__globalPhoneLock)

{

return __databse.TryGetTerritory(territoryName);

}

}

public static Phone TryParseWithCountryCode(string number, string countryCode)

{

LoadStaticContent();

var region = TrnaslateRegion(countryCode);

if (region != null)

{

var territory = region.Territories.FirstOrDefault();

if (territory != null)

{

return TryParse(number, territory.Name);

}

}

return null;

}

public static Phone TryParse(string number, string territoryName = null)

{

LoadStaticContent();

if (string.IsNullOrEmpty(number))

{

return null;

}

var globalNumber = global::GlobalPhone.GlobalPhone.TryParse(number, territoryName);

if (globalNumber != null && globalNumber.IsValid)

{

return new Phone(globalNumber);

}

//In scenario such as 6597531150 we need to help the library to understand that there is already the country code as a prefix

var territory = TranslateTerritory(territoryName);

if (territory != null)

{

//If the number start with same country code, we will try to add the plus and parse it again

if (number.StartsWith(territory.CountryCode))

{

globalNumber = global::GlobalPhone.GlobalPhone.TryParse(string.Format("+{0}", number), territoryName);

if (globalNumber != null && globalNumber.IsValid)

{

return new Phone(globalNumber);

}

}

}

return null;

}

}

以上就是C# 国际手机号类封装 - 使用nuget Global Phone 解析国际手机号的内容,更多相关内容请关注PHP中文网(www.php.cn)!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值