У меня есть список (строка) телефонных номеров из любой страны.
Например:
var items = new List<string> { "+989302794433", "009891234599882", "+391234567890", "00336615551212"};
сначала я думаю, что длина кода каждой страны - это ровно два числа, например (33: Франция, 39: Италия, 98: Иран, ...).
используя библиотеку libphonenumber, вы должны передать regCode для синтаксического анализа. и из-за того, что (в моем сценарии) я получаю список строк (номер мобильного телефона), тогда я должен быть отдельным кодом страны от номера.
foreach (var item in items)
{
int countryCode = 0;
var number = "";
if (item.StartsWith("+"))
{
countryCode = int.Parse(item.Substring(1, 2));
number = item.Substring(3);
}
else if (item.StartsWith("00"))
{
countryCode = int.Parse(item.Substring(2, 2));
number = item.Substring(4);
}
var regCode = phoneUtil.GetRegionCodeForCountryCode(countryCode);
var numberWithRegCode = phoneUtil.Parse(number, regCode);
if (!phoneUtil.IsValidNumber(numberWithRegCode)) continue;
//else ...
}
этот код отлично работал только для кодов стран, длина которых равна двум цифрам!
но через некоторое время я понял, что длина кода страны - это одно число (например, США: 1) и даже три числа !.
теперь существует ли способ использования библиотеки libphonenumber (или других решений) для решения этой проблемы?
большое спасибо
US
для соединенных штатов вместо840
. - person Quantic   schedule 05.10.2016