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)!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号