В качестве отступления: друг рассказал мне о гигантском регулярном выражении, которое он должен был поддерживать, чтобы он мог выбирать телефонные номера из перехваченных сообщений из сотен стран по всему миру.Это было очень нетривиально.
К счастью, ваша проблема проще, поскольку вы можете просто иметь таблицу с форматами для каждой страны:
format[usa] = "+d (ddd) ddd-dddd";
format[hk] = "+ddd ddd-ddd-dd";
format[china_mobile] = "+dd ddd-dddd-dddd";
...
Затем, когда вы печатаете, выпросто выведите одну цифру из строки телефонного номера в каждом d
месте по мере необходимости.Это предполагает, что вы знаете страну, что является достаточно безопасным допущением для телефонных устройств - выберите форматы «по умолчанию» для нескольких соседних стран.
Поскольку в некоторых странах существуют разные форматы с разной длиной Вам может необходимо хранить таблицу с дополнительной информацией:
format[germany][10] = "..."
format[germany][11] = "....."