Алгоритм определения международного телефонного кода с номера телефона - PullRequest
3 голосов
/ 22 ноября 2011

Я могу получить номер телефона контакта с устройства с помощью платформы адресной книги на iOS. Как я могу отделить или определить, какой код страны, а какой номер телефона? Возможно ли это?

Ответы [ 5 ]

5 голосов
/ 23 июня 2012

Коды стран - довольно запутанная тема, но достаточно стандартная, чтобы с помощью некоторого обслуживания программиста вы могли ее решить.

Вы можете идентифицировать код страны по его начальной подпоследовательности.Выполните следующий алгоритм:

  1. Создайте простую базу данных - можно даже сохранить ее в виде простого файла и загрузить в словарь в памяти - кодов стран.

  2. Рекурсивно от n = 1 до 3, проверьте, соответствуют ли первые n цифр номера телефона какому-либо коду страны.Если это так, это код вашей страны.Если это не удастся, попробуйте 3, это не правильный код страны.

  3. Если вам нравится иметь дело с квази-неоднозначностями.Если вы когда-либо видели совпадение между кодами стран, например, если вы видите «1340» для Виргинских островов, то это потому, что в некотором, вероятно, неактуальном смысле это подмножество кода страны «1» для кодов стран США, которые иногда отражают геополитические ситуации, и обычно это выражаетсяразделив код страны на следующую цифру.«1» будет официальным кодом страны, но то, что будет более интересным для вас, зависит от вашей заявки.

Примечание : требуется техобслуживание, когда мыслят как советскиеПроисходит распад профсоюзов.


Теперь все становится еще сложнее, когда вам приходится иметь дело с тем фактом, что у некоторых # уже есть коды стран, а у некоторых - нет, и тому подобное.Единственный найденный код страны, в котором код страны может также указываться в качестве ведущего кода страны, - это Сингапур - я думаю, это был +65-65....С приличной точностью вы можете использовать бизнес-логику в следующем формате:

  • Следите за форматом чисел в США: (xxx) xxx-xxxx и т. Д.
  • Используйте тот факт, что только определенные цифрыдлины могут происходить в данных странах.Есть документы на это, если вы ищете достаточно сложно.например, все американские номера имеют длину 10, японские номера могут быть длиной 9 или 10. Это может дать вам дополнительную информацию.
  • Игнорировать начальные 0 для большинства стран.Италия и Кот-д'Ивуар - единственные два исключения, которые я нашел, у них могут быть действительные лидирующие нули.В противном случае это просто местная телекоммуникационная конвенция о пребывании внутри страны, обычно.
1 голос
/ 16 мая 2012

Что я сделал, так это создал массив всех кодов вызова стран в Википедии.Затем, когда у меня есть номер телефона, я пытаюсь сопоставить первые четыре цифры с одним из кодов вызова страны.Если ничего не найдено, попробуйте первые три цифры и так далее.В конце концов я нахожу код вызова.

0 голосов
/ 12 июля 2016

Коды вызова страны довольно легко обнаружить по номеру телефона.

Первое, что вам нужно сделать, это разобрать коды вызова в дереве, где каждая цифра представляет собой ветвь.

Затем найти код страны так же просто, как обойти дерево, цифра за цифрой, до последней ветви, которая соответствует коду страны.

В этот момент (июль 2016 г.) самый длинный код вызова страны имеет5 цифр, поэтому ваше дерево не должно иметь более 5 уровней ветвей.

0 голосов
/ 26 июня 2015

После некоторых исследований я нашел эту библиотеку, которая, кажется, выполняет свою работу: https://github.com/iziz/libPhoneNumber-iOS

0 голосов
/ 31 декабря 2011

Мы не можем идентифицировать код страны по номеру телефона.

...