** Я ищу процедуру, которая будет форматировать строку чисел как номер телефона в Великобритании. **
Вы можете загрузить базу данных Ofcom, в которой перечислены форматы для каждого диапазона номеров, включая номера только для национальных номеров, и выполнить поиск каждого номера, который необходимо отформатировать. В базе данных перечислены цифры SABCDE и формат: 0 + 10, 2 + 8, 3 + 7, 4 + 6, 4 + 5, 5 + 5 или 5 + 4 для каждого диапазона.
В базе данных имеется небольшое количество ошибок (особенно для кодов 01697 и 0169 77), но они содержат менее десяти ошибок в более чем четверти миллиона записей.
Существует четыре файла с номерами 01 и 02 и отдельные файлы для различных диапазонов негеографических номеров.
0 + 10 номеров - «Только национальный набор» и пишутся без скобок вокруг части кода города. Код города будет 02x для всех 02 номеров, 01xx для всех номеров 011x и 01x1 и 01xxx для большинства других номеров 01 (хотя очень маленькое число - около дюжины - будет 01xx xx).
Круглые скобки окружают код города на всех других числах 01 и 02 (то есть используйте круглые скобки на номерах 01 и 02, где часть локального номера не начинается с 0 или 1). Скобки показывают, что локальный набор возможен в пределах одной и той же области, опуская цифры, заключенные в скобки.
Номенклатура 2 + 8 показывает код города и длину местного номера, с вводом 2075: 2 + 8 означает, что номер отформатирован как (020) 75xx xxxx. Помните, что ведущий ноль не «учитывается» при определении 2 + 8.
** Длина телефонных номеров в Великобритании варьируется от 8 до 12 цифр **
Нет. С 2000 года большинство имеют 10 цифр после кода транка «0». У некоторых все еще есть 9 цифр после кода магистрали '0'.
Есть также несколько специальных чисел, таких как 0800 1111 и 0845 4647.
** Коды "области" могут варьироваться от 2 до 4 цифр. **
Коды регионов могут варьироваться от 2 до 5 цифр (начальный ноль не учитывается). Для ясности, «020» классифицируется как двузначный код города, потому что в начале 0 - это код транка. Существуют также коды городов 011x и 01x1, и большинство номеров имеют коды городов 01xxx. Последние могут иметь локальные номера длиной всего 5 цифр вместо более распространенных 6-значных локальных номеров. Очень маленькое число имеет код города 01xx xx, и у них есть 5 или 4 цифры местных номеров.
** Кроме того, не существует стандарта для точного расположения пробелов. **
Между частью кода города и частью местного номера всегда есть пробел для всех номеров 01 и 02.
Традиционно для (01xx xx) кодов городов в коде области должен быть пробел, как показано. Это представляет старые локальные группы обмена, где эта система все еще используется. Другие (более короткие) коды городов не разделяются.
Локальные номера с 7 или 8 цифрами разделяются перед четвертой цифрой с конца. Местные номера с 4, 5 или 6 цифрами не разделяются. Это относится как к географическим, так и к негеографическим номерам.
Для большинства номеров 03, 08 и 09 число записывается как 0xxx xxx xxxx.
Некоторые цифры 0800 и все 0500 записаны 0xxx xxxxxx.
Для номеров 055, 056 и 070 записывается число 0xx xxxx xxxx.
Для номеров мобильных телефонов и пейджеров используйте 07xxx xxxxxx.
** за исключением того, что некоторые люди используют '08000 abc def' вместо '0800 0abc def' **
Это использование неверно. Имейте в виду, что некоторые номера 0800 имеют 9 цифр после кода транка 0, тогда как другие имеют 10 цифр после кода транка 0.
Итак, оба 0800 хххххх и 0800 ххх хххх верны.
0500 номеров используют только 0500 xxxxxx.
Большинство чисел 03, 08 и 09 написаны в виде 0xxx xxx xxxx.
Смотрите также:
http://en.wikipedia.org/wiki/Local_conventions_for_writing_telephone_numbers#United_Kingdom