我使用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();
}
答案 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工作。