Как разобрать адрес бесплатного формата для сохранения в DataBase

У меня есть текстовая область, которая позволяет пользователю вводить тип в свободном формате, как я могу разобрать адрес пользователя, введенный в адрес1, адрес2, город, штат, почтовый индекс и страну и сохранить в БД?

Ответ 1

У вас здесь много боли.

Адреса ДЕЙСТВИТЕЛЬНО ПЛОХО отличаются друг от друга, и даже внутри одной синтаксической разницы является склонной к ошибкам. Был там, возглавляя команду из 2 человек, тратящих месяцы, пытаясь разобрать все адреса НЕМЕЦКИЙ. Множество глупых небольших дел слева и справа.

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

Пойдите с приличной формой ввода, а не со свободной текстовой записью.

Ответ 2

Не используйте вместо этого форму ввода данных для отдельного поля.

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

то есть:

  • Разделить на новые строки.
  • 1-я строка - это номер дома и улица.
  • Последняя строка может быть почтовым индексом /zipcode.
  • Строка Last-but-one может быть городом.
  • Линии между первым и последним, но одно - это адресная строка 2, 3 и т.д.

ВАЖНО
Форматы адресов сильно различаются между странами. Если бы я был вами, и у вас были возможности для этого, я бы по крайней мере предоставил выпадающий список страны, чтобы вы могли применять различные правила синтаксического разбора для каждой страны.

Ответ 3

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

Чтобы сохранить проблему, я бы просто имел отдельные поля для каждого отдельного элемента или просто сохранил адрес как целую строку.

Ответ 4

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