У меня есть текстовая область, которая позволяет пользователю вводить тип в свободном формате, как я могу разобрать адрес пользователя, введенный в адрес1, адрес2, город, штат, почтовый индекс и страну и сохранить в БД?
Как разобрать адрес бесплатного формата для сохранения в DataBase
Ответ 1
У вас здесь много боли.
Адреса ДЕЙСТВИТЕЛЬНО ПЛОХО отличаются друг от друга, и даже внутри одной синтаксической разницы является склонной к ошибкам. Был там, возглавляя команду из 2 человек, тратящих месяцы, пытаясь разобрать все адреса НЕМЕЦКИЙ. Множество глупых небольших дел слева и справа.
Печальные новости - Я не думаю, что это можно сделать надежно. Не так, как запись является свободной формой, а не тем, как люди вводят адреса по-разному.
Пойдите с приличной формой ввода, а не со свободной текстовой записью.
Ответ 2
Не используйте вместо этого форму ввода данных для отдельного поля.
Предполагая, что вы не будете/не можете/не будете прислушиваться к этому совету, тогда вы должны сделать некоторые предположения о том, как он был введен. Вы можете быть немного умнее, начиная с концов и работать свой путь, хотя.
то есть:
- Разделить на новые строки.
- 1-я строка - это номер дома и улица.
- Последняя строка может быть почтовым индексом /zipcode.
- Строка Last-but-one может быть городом.
- Линии между первым и последним, но одно - это адресная строка 2, 3 и т.д.
ВАЖНО
Форматы адресов сильно различаются между странами. Если бы я был вами, и у вас были возможности для этого, я бы по крайней мере предоставил выпадающий список страны, чтобы вы могли применять различные правила синтаксического разбора для каждой страны.
Ответ 3
Вы не можете предсказать, как пользователь будет вводить адрес, например. некоторые предпочитают использовать новые строки, другие предпочитают использовать запятую.
Чтобы сохранить проблему, я бы просто имел отдельные поля для каждого отдельного элемента или просто сохранил адрес как целую строку.
Ответ 4
Я не думаю, что вы сможете правильно разобрать его в случае свободного формата. Вы можете использовать MaskedEdit для этих целей. Другой способ - потребовать от пользователя ввода информации в определенном порядке.