从地址中删除重复的单词

时间:2016-10-06 08:09:03

标签: java android reverse-geocoding

我使用Geocoder获取地址。有时我会获得城市或邮政编码两次。我想删除这些重复的单词,使地址更容易接受。有没有办法做到这一点?我搜索了从字符串中删除重复的单词,但只有一个好result,但它在我的情况下没有用。从下面的代码中,如果我获取当前地址,我得到结果:

Street no 0360  
DH Block(Newtown), Action Area I, Newtown  
New Town, West Bengal 700156  
New Town  
700156  
India  

代码

    Geocoder geocoder = new Geocoder(this, Locale.getDefault());

        List<Address> addresses = null;
        String result = null;

        try {

            addresses = geocoder.getFromLocation(location.getLatitude(),location.getLongitude(),1);

        } catch (IOException ioException) {
            errorMessage = getString(R.string.service_not_available);
            Log.e(TAG, errorMessage, ioException);
        } catch (IllegalArgumentException illegalArgumentException) {
            errorMessage = getString(R.string.invalid_lat_long_used);
            Log.e(TAG, errorMessage + ". " +"Latitude = " + location.getLatitude() +", Longitude = " + location.getLongitude(), illegalArgumentException);
        }

        if (addresses == null || addresses.size() == 0) {
            if (errorMessage.isEmpty()) {
                errorMessage = getString(R.string.no_address_found);
                Log.e(TAG, errorMessage);
            }
            deliverResultToReceiver(AppUtils.LocationConstants.FAILURE_RESULT, errorMessage, null);
        } else {
            Address address = addresses.get(0);

            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < address.getMaxAddressLineIndex(); i++) {
                sb.append(address.getAddressLine(i)).append(" ");
            }
            sb.append(address.getLocality()).append(" ");
            sb.append(address.getPostalCode()).append(" ");
            sb.append(address.getCountryName());
            result = sb.toString();

       }    

2 个答案:

答案 0 :(得分:0)

//调用方法

Select ID, version, dateFrom, dateTo
from table_1 a
where not exists (
 select 1 
 from table_1 b 
 where a.id = b.id and a.version < b.version)

//删除重复单词的方法

  String Address = "Street no 0360 DH Block(Newtown), Action Area I, NewTown NewTown, West Bengal 700156  NewTown 700156 India";

    String output = RemoveDuplicateWords(Address.toLowerCase());

答案 1 :(得分:0)

您解析地址的方式并不是非常强大。您可以使用address validation服务修复重复问题。它将输入匹配到真实地址数据库中的条目,这将删除重复的单词和standardize地址。

我建议SmartyStreets。请使用demo page上的搜索字词进行试用。

公平披露:我为SmartyStreets工作。