Лучше сохранить номера телефона в некотором стандартном формате или, “как вводится”?

Вы изучили использование Инверсия Управления контейнер? Я использую замок Windsor с внешним файлом Шиканья, который позволяет мне легко расширить applcation, не имея необходимость перекомпилировать или волноваться о предоставлении зависимостей

15
задан Daniel Rikowski 10 October 2009 в 13:20
поделиться

9 ответов

Я бы сохранил исходный введенный беспорядок, но также вставил бы очищенную форму в базу данных. Что только сохранило в цифрах меньше знаков препинания и пробелов. Использование очищенной формы позволит легко выполнять поиск, не беспокоясь о различных возможных введенных стилях.

5
ответ дан 1 December 2019 в 00:10
поделиться

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

Вот как я это делаю.

21
ответ дан 1 December 2019 в 00:10
поделиться

Какая у вас база пользователей?

Если они будут иметь географические ограничения (например, только для США), и вы собираетесь строго проверять числа, то отформатируйте их канонически. - т. е. удалите любое использованное ими форматирование (например, точки между числами ...) и вставьте тире (не проваливайте проверку, если они не придерживаются вашего форматирования ... это просто означает). Я бы также сохранил эту очищенную версию в базе данных, а не вырезанный номер; это немного упрощает вашу жизнь при создании пользовательских отчетов и т. д.

Если у вас могут быть пользователи / номера со всего мира, может быть лучше сохранить используемое ими форматирование. Также не забывайте, что иногда жители США в настоящее время путешествуют и используют иностранный номер: не блокируйте их непреднамеренно.

В любом случае: убедитесь, что вы НЕ определяете столбец как числовой или не делаете его слишком маленьким. Международные номера с форматированием могут содержать более 16 символов.

6
ответ дан 1 December 2019 в 00:10
поделиться

Великобритания - особый случай, поскольку у нас есть коды STD (зоны) переменной длины и сам номер абонента переменной длины. Чем длиннее код STD, тем короче номер. Подобная система существует в Германии и некоторых других странах.

В большинстве случаев номера состоят из 10 цифр после префикса магистральной линии 0 (междугороднего), но несколько десятков областей также имеют примерно 9-значные номера.

  • 020 2345 5678 (Лондон) также Кардифф, Саутгемптон, Портсмут, Ковентри и Северная Ирландия
  • 0115 234 4567 (Ноттингем) также Шеффилд, Бристоль, Лестер, Рединг и Лидс
  • 0141 345 5678 (Глазго) также Бирмингем, Эдинбург, Тайнсайд, Манчестер и Ливерпуль
  • 01332 234 456 (Дерби) большинство других областей (около 580 областей) также используют этот формат
  • 01750 45678 (Селкирк) и около 40 областей имеют номера, которые на цифру короче
  • 017687 45678 ( Keswick) также Langholm, Hornby, Hawkshead, Grange-over-Sands, Sedbergh, Wigton, Raughton Head, Brampton, Appleby, Pooley Bridge и Gosforth.
  • 016977 2345 (Brampton) Единственное место, где используется формат «5 + 4».
  • 07812 123 456 (мобильные номера)

Помните, что номера 0800 могут иметь разную длину, например 0800 567 1234 или 0800 234 456. г. 0800 567 1234 или 0800 234 456. г. 0800 567 1234 или 0800 234 456. Старые номера 0500 также на цифру короче, например 0500 456 456.

Кроме того, некоторые люди любят группировать свои номера 234 234, в то время как другие используют 23 23 23 (в зависимости от фактических цифр).

Есть аргументы в пользу сохранения как введено и сохраняется в единой форме:

Если вы сохраняете число как последовательность чисел, вы можете выводить его любым способом, либо принимая во внимание предпочтения пользователя или их языковой стандарт и разделяя число в соответствии с в «правила» (какими бы они ни были).

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

5
ответ дан 1 December 2019 в 00:10
поделиться

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

Раньше (когда-то десять или более лет назад) в Великобритании было 01-234-2345, 021-234-1234, 0334-234234, даже 092324-213; Сейчас в Великобритании все по-другому - обычно больше цифр, и я больше не уверен в группировках (отсутствие делает знания менее актуальными).

Работа с префиксами страны и указание префикса внутреннего набора страны - это весело: +44 (0) 1394-726629 - это номер для Великобритании, код страны 44; набирая номер из-за пределов Великобритании, опустите 0; При наборе номера внутри Великобритании не включайте международный префикс, но обязательно укажите 0. Обратите внимание, что форма с (0) в ней фактически недействительна, если вы следуете стандарту E.123.

Это похоже на проблема канонизации почтовых адресов - не такая сложная, но все же плохая.

Кроме того, как отмечалось в моем комментарии к ответу HeavyWave, заставлять людей вводить номер телефона в виде строки цифр без знаков препинания неприятно. Это нормально хранить в таком виде; просто представьте данные в удобочитаемом формате. Слишком много ленивого программирования веб-форм.

набирая номер из-за пределов Великобритании, опустите 0; при наборе номера внутри Великобритании не включайте международный префикс, но обязательно укажите 0. Обратите внимание, что форма с (0) в ней фактически недействительна, если вы следуете стандарту E.123.

Это похоже на проблема канонизации почтовых адресов - не такая сложная, но все же плохая.

Кроме того, как отмечалось в моем комментарии к ответу HeavyWave, заставлять людей вводить номер телефона в виде строки цифр без знаков препинания неприятно. Это нормально хранить в таком виде; просто представьте данные в удобочитаемом формате. Слишком много ленивого программирования веб-форм.

набирая номер из-за пределов Великобритании, опустите 0; При наборе номера внутри Великобритании не включайте международный префикс, но обязательно укажите 0. Обратите внимание, что форма с (0) в ней фактически недействительна, если вы следуете стандарту E.123.

Это похоже на проблема канонизации почтовых адресов - не такая сложная, но все же плохая.

Кроме того, как отмечалось в моем комментарии к ответу HeavyWave, заставлять людей вводить номер телефона в виде строки цифр без знаков препинания неприятно. Это нормально хранить в таком виде; просто представьте данные в удобочитаемом формате. Слишком много ленивого программирования веб-форм.

Это похоже на проблему канонизации почтовых адресов - не такая сложная, но все же плохая.

Кроме того, как отмечалось в моем комментарии к ответу HeavyWave, люди заставляют людей вводить номер телефона в виде строки цифр без знаков препинания. противно. Так хранить можно; просто представьте данные в удобочитаемом формате. Слишком много ленивого программирования веб-форм.

Это похоже на проблему канонизации почтовых адресов - не такая сложная, но все же плохая.

Кроме того, как отмечалось в моем комментарии к ответу HeavyWave, люди заставляют людей вводить номер телефона в виде строки цифр без знаков препинания. противно. Так хранить можно; просто представьте данные в удобочитаемом формате. Слишком много ленивого программирования веб-форм.

4
ответ дан 1 December 2019 в 00:10
поделиться

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

-1
ответ дан 1 December 2019 в 00:10
поделиться

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

1
ответ дан 1 December 2019 в 00:10
поделиться

Проверить ввод, но разрешить широкий спектр форматов. Сохраните его в том виде, в каком он был введен пользователем, а затем переформатируйте вывод по мере необходимости.

Допустим, пользователь набрал свой номер во время регистрации в приложении общедоступной телефонной книги. Например, я бы отобразил его «как пользователь набрал» в текстовом поле на его странице «Изменить мой профиль». Но я бы отобразил его в стандартном формате в списке телефонной книги общедоступных пользователей.

0
ответ дан 1 December 2019 в 00:10
поделиться

Separation of Duties - Content and Rendering

Store the number in a canonical format and the display format mask.

Gains:

  • Canonical format for consistency, quality, and ease of analysis
  • Format retained from end-user perspective
  • Format re-usable to display other phone numbers in end-user preferred method
  • Other format masks can be used to display canonical number to other users with a need to see the phone number

Pains:

  • Parsing the phone number to the canonical format
  • Parsing out the display format mask (not too painful in combination with above bullet)
  • Storing the display format as an end-user preference
6
ответ дан 1 December 2019 в 00:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: