어떤 국가의 전화 번호 목록 (문자열)이 있습니다. 예를 들어libphonenumber를 사용하여 국가를 모른 채 휴대 전화 번호를 확인하십시오.
: 프랑스, 39 : 처음에
var items = new List<string> { "+989302794433", "009891234599882", "+391234567890", "00336615551212"};
, 나는 모든 국가 코드 길이가 정확히 예 (33 개의 숫자이라고 생각 이탈리아, 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 ...
}
이 코드는 길이가 두 자리라는 국가 코드에만 적용됩니다.
하지만 약간의 시간이 지나면 일부 국가 코드 길이가 하나의 숫자 (예 : US : 1)이고 심지어 세 개의 숫자라는 것을 알았습니다.
지금은 libphonenumber 라이브러리 (또는 다른 솔루션)를 사용하여이 문제를 해결할 수 있습니까?
덕분에 많은
ftom 날짜를 사용할 수 있습니다. 또한 전화 번호 형식을 항상 검증하는 데에는 제한된 양의 근거가있을 수 있습니다. 사용자가 실제 전화 번호를 제공하지 않으려는 경우 전화 번호를 입력하게됩니다. –
질문의 첫 부분이 잘못 되었음이 드문 경우입니다. 대부분의 국가에서 3 자리 숫자 코드를 사용하고 일부는 4, 5, 6을 사용합니다. https://en.wikipedia.org/wiki/List_of_country_calling_codes – Jamiec
github 페이지에서이 웹 사이트로 연결됩니다. 데모 https://libphonenumber.appspot.com/으로 데모에서 "ISO 3166-1 2 문자 국가 코드"를 사용하고 http://www.iso.org/iso/english_country_names_and_code_elements에 링크되어 있습니다. 아마 1-3 자리 숫자 코드 대신 2 문자 알파 코드를 사용해보십시오. 예를 들어, 'US'를 '840'대신 미국에 사용하십시오. – Quantic