1

我编写了下面的代码来代表西班牙的地址。让我知道是否有更好的方法可以做到这一点,或者是否已经有一个处理 i18n 地址的开源库。

/**
 * From <a href="http://www.addressdoctor.com/en/countries_data/sampleaddress.asp?code=ESP%2BSpain}">Address doctor</a>
 * <p>
 * Format
 * </p>
 * 
 * <pre>
 * Line 1:  RECIPIENT
 * Line 2:  [URBANISATION]
 * Line 3:  STREET_TYPE STREET_NAME, HOUSE_NUMBER [FLOOR] [APARTMENT]
 * Line 4:  POSTAL_CODE LOCALITY
 * Line 5:  SPAIN
 * </pre>
 * 
 * Example
 * 
 * <pre>
 * Isidre Varo
 * Avenida de Canillejas a Vicalvaro 82 piso 4
 * 28022 MADRID
 * SPAIN
 * </pre>
 * 
 * @author Aravind R Yarram
 * 
 */
public interface SpainAddress
{
    /**
     * E.g road types would be Calle (Street)
     * <p>
     * TODO may be an enumeration
     * </p>
     */
    String getStreetType();

    String getStreetName();

    String getHouseNumber();

    String getFloorNumber();

    /**
     * <p>
     * TODO need validation
     * </p>
     */
    String getPostalCode();

    /**
     * Poblacion
     */
    String getCity();

    /**
     * Also known as province
     */
    String getLocality();
}
4

1 回答 1

3

我住在马德里并精通西班牙语,我可以提供几点意见。

我不会将街道类型和名称分开,因为街道类型通常是名称的一部分,或者可能会丢失(例如,Gran Via)。任何解析算法要么会出错,要么需要一个巨大的异常表(它仍然会出错)。

在 Locality 之后为 Province 提供一个字段。这是具有欺骗性的,因为对于大城市,省通常会被省略,尤其是在城市名称和省份名称相同的情况下。这是一个地方和省份不同的例子:

Calle Alcala, 45
28192 El Berrueco
Madrid
Spain
于 2010-08-02T17:19:20.260 回答