2016-10-06 14 views
2

Ich bekomme Adresse mit Geocoder. Manchmal bekomme ich zweimal die Stadt oder die Postleitzahl. Ich möchte diese doppelten Wörter entfernen, um die Adresse akzeptabler zu machen. Gibt es eine Möglichkeit, dies zu tun? Ich suchte nach dem Entfernen von doppelten Wörtern aus der Zeichenfolge, aber nur eine gute result, aber es hat in meinem Fall nicht funktioniert. Aus dem folgenden Code, wenn ich meine aktuelle Adresse holen, bekomme ich Ergebnis:Entfernen Sie doppelte Wörter von der Adresse

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

-Code

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

Bitte erläutern Sie, warum die verknüpfte Frage nicht funktioniert hat. Genau so entfernen Sie Dubletten und erhalten Ordnung. Alle Elemente zu einem LinkedHashSet hinzufügen –

+0

Ich habe versucht, aber ich habe immer noch das gleiche Ergebnis. – CodeAssasins

+0

Es ist nicht klar, was Sie ausprobiert haben. Der einzige Wert, mit dem es arbeiten sollte, ist DH Block (Newtown), Aktionsbereich I, Newtown, aber nur, wenn Sie auf Leerzeichen aufteilen und einen nach Block hinzufügen, dann entfernen Sie die Klammern. Mit anderen Worten, ich denke, Sie haben nicht verstanden, wie Sie diese Antwort an den Code anpassen können, den Sie haben. Und was ist Ihre erwartete Leistung? –

Antwort

0

// Call-Methode wie

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

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

// Methode zum Entfernen doppelte Worte

public String RemoveDuplicateWords(String word){ 
     int i=0,j=0,n; 
     word = word.replaceAll(",", ""); 
     word = word.replace("(", " "); 
     word = word.replace(")", " "); 
     String array_word[]; 
     String final_string=""; 
     array_word=word.split(" "); 
     n=array_word.length; 


     for(i=0;i<n;i++){ 
      for(j=i+1;j<n;j++){ 
       if(array_word[i].equalsIgnoreCase(array_word[j]) && !array_word[i].equalsIgnoreCase("**")){ 
        array_word[j]="**"; 
       } 
      } 
     } 


     for(i=0;i<n;i++){ 
      if(array_word[i]!="**") 
      { 
       final_string=final_string+array_word[i]+" "; 
      } 
     } 

     return final_string; 
    } 
+0

Dies könnte mit einem Set und einem StringBuilder optimiert werden –

0

Die Art und Weise Ihrer Parsing ist deine Adresse nicht extrem robust. Sie können das Duplizierungsproblem beheben, indem Sie einen Service address validation verwenden. Es passt die Eingabe an Einträge in einer Datenbank von realen Adressen an, die doppelte Wörter und standardize die Adresse entfernen würden.

Ich empfehle SmartyStreets. Probieren Sie es mit Ihrem Suchbegriff auf der demo page.

Fair Offenlegung: Ich arbeite für SmartyStreets.

Verwandte Themen