2

これらがnullに等しくない場合は通り、都市、郵便番号、国を追加したい、通りがnullの場合は通りを追加しない、メソッドがありますが、これに最短で最適な方法を取得したい...

map.put(KEY_ADDRESS, street+" "+city +" " +zipcode+ " "+country);

私の方法はこれです

if(street.trim().length()>0&&city.trim().length()>0&&zipcode.trim().length()>0&&country.trim().length()>0)
    {
     map.put(KEY_ADDRESS, street+" "+city +" " +zipcode+ " "+country);
     }
 else if(){

   }
 else if(){

     }

すべての文字列がnullであることを確認する最短の方法が必要であり、その文字列をマップに追加しないでください...事前に感謝します

4

5 に答える 5

1
map.put(KEY_ADDRESS, validate(street, true), true)+validate(city, true)+ validate(zipcode, true)+validate(country, false));


private String validate(String value, final boolean append)
{
    value = ( value != null ) ? value.trim() : value;
    return (value != null && value.length() > 0) ? value + (( append ) ? " " : "") : "";
}
于 2013-02-19T07:52:06.457 に答える
1
map.put(checkString(street)+checkString(city)+checkString(zip)+checkString(country));

public String checkString(String str)
{
return str.trim().length()>0?str:"";
}
于 2013-02-19T08:02:18.607 に答える
1

すべての文字列を順番に配列に格納します。

String[] sa = new String{street, city, zipcode, country};

private String getAddress(String[] sa){

String s = "";
for(i = 0; i < 4; i++){

if(sa[i] != null){
s = s + " " + sa[i].trim();
}
}
return s;
}
于 2013-02-19T07:48:19.967 に答える
1

以下のようにメソッドを作成します。...変数パラメータを意味します。

public boolean AnyNullOrEmpty(String ... strs)
{
    for(String s : strs) {
        if(s == null)
            return false;
        if(s.trim().length() == 0)
            return false;
    }

    return true;
}

あれを呼べ:

if(NoneNullOrEmpty(street, city, zipcode, country)) {
    // do watever
}
于 2013-02-19T07:48:52.493 に答える
1

文字列を null または空としてテストする組み込みのユーティリティ クラスがあります

また、StringBuilder を使用してパーツから String を構築することもできます。

StringBuilder b = new StringBuilder();
String[] lines = {street, city, etc...}
for(String l : lines){
    if(!TextUtils.isEmpty(l)){
        b.append(l).append(" ");
    }
}
String address = b.toString();
于 2013-02-19T07:50:50.707 に答える