2016-07-30 5 views
-1

So stehe ich jetzt gerade auf dem Thema der Validierung der Postleitzahlensuche für meine Wetter-App. Ich möchte auch die Stadt- und Staatssuche validieren. Zum Beispiel möchte ich nur 5 Ziffern für die Postleitzahl, wenn Menschen nach einer Postleitzahl suchen. Für die Stadt möchte ich keine Nummern, wenn sie nach der Stadt suchen. Kann mir jemand helfen?So validieren Sie Postleitzahl und Stadt/Bundesland für die Wetter-App

public class WeatherRequestTask extends AsyncTask<String, Integer, ResponseDto> { 
    private static final String WU_HOST = "http://api.wunderground.com"; 
    private static final String WU_API_KEY = "/api/36053e2befabcfe2"; 
    private static final String WU_DATA_FEATURE_CONDITION = "/conditions"; 
    private static final String WU_QUERY_TAG = "/q"; 
    private static final String WU_API_EXT = ".json"; 

    private String mZipCode; 
    private String mCity; 
    private String mState; 

    public WeatherRequestTask(String zipCode) { 
     if (TextUtils.isEmpty(zipCode)) { 
      throw new IllegalArgumentException("Zip Code is required"); 
     } 
     mZipCode = zipCode; 

    } 

    public WeatherRequestTask(String city, String state) { 
     mCity = city; 
     mState = state; 
     // TODO: validate city and state 
    } 

    @Override 
    protected ResponseDto doInBackground(String... strings) { 
     ResponseDto myResponseDto = new ResponseDto(); 
     HttpURLConnection urlConnection = null; 
     try { 

      URL url; 
      if (TextUtils.isEmpty(mZipCode)) { 
       // use city and state query 
       url = new URL(WU_HOST + WU_API_KEY + WU_DATA_FEATURE_CONDITION + WU_QUERY_TAG + "/" + mState + "/" + 
         mCity + WU_API_EXT); 
      } else { 
       // use zipCode query 
       url = new URL(WU_HOST + WU_API_KEY + WU_DATA_FEATURE_CONDITION + WU_QUERY_TAG + "/" + mZipCode + 
         WU_API_EXT); 
      } 

      urlConnection = (HttpURLConnection)url.openConnection(); 
      BufferedReader br = new BufferedReader((new InputStreamReader(urlConnection.getInputStream()))); 
      StringBuilder sb = new StringBuilder(); 

      String temp; 
      while ((temp = br.readLine()) != null) { 
       sb.append(temp); 
      } 

      JSONObject contentJson = new JSONObject(sb.toString()); 
      Response response = Response.deserialize(contentJson.getJSONObject("response")); 
      CurrentObservation currentObservation = CurrentObservation.deserialize(contentJson.getJSONObject 
        ("current_observation")); 
      myResponseDto.setCurrentObservation(currentObservation); 
      myResponseDto.setResponse(response); 
     } catch (Exception e) { 
      return null; 
     } finally { 
      if (urlConnection != null) { 
       urlConnection.disconnect(); 
      } 
     } 
     return myResponseDto; 
    } 
} 
+1

Wonach suchen sie, ist es in einem Editiertext oder Such-Widget? –

+0

Es wäre ein Bearbeitungstext –

+0

Bitte poste etwas von deinem Code, damit es dir einfach ist, dir zu helfen –

Antwort

0

Für diesen Teil:

Zum Beispiel möchte ich nur 5 Ziffern für die Postleitzahl, wenn die Leute für eine Postleitzahl suchen

Sie können versuchen, für das überprüfen Länge der Postleitzahl Zeichenkette:

if(zipCode.length==5){ 

    //zipcode is 5 characters 
    //proceed with the search 

}else{ 

    //zipcode is less or more than 5 
    //warn user or whatever 
} 

Und für:

Für die Stadt möchte ich keine Nummern, wenn sie nach der Stadt suchen.

if(mState.matches(".*\\d+.*"){ 

    //contains numbers 
    //so don't carry forward or warn user 

    }else{ 

    //Possibly what you want 

    } 
+1

Überprüfen Sie Übereinstimmungen '\\ d', um eine beliebige Zahl innerhalb der Zeichenfolge zu finden –

0

Diese Frage hat mehrere Tentakeln. Was bedeutet "validieren"? Es gibt Datenbanken, die Sie kaufen können, die ZIP-Codes in Staat/Stadt-Paare zuordnen; Das umgekehrte Problem ist ein bisschen komplizierter. Die USPS veröffentlicht riesige Bücher, die diese Informationen anbieten.

Wie für Städte ohne Zahlen habe ich noch nie von einem Stadtnamen gehört, der eine Nummer enthält - außer Twentynine Palms, Kalifornien, aber das ist ein Wort.

Verwandte Themen