如果string不为null,则想要最短的方法,否则不添加

时间:2013-02-19 07:40:59

标签: android

如果这些不等于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然后不要将该字符串添加到地图中... 提前谢谢

5 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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
}

答案 2 :(得分:1)

有一个内置的实用程序类可以将字符串测试为null或空:https://developer.android.com/reference/android/text/TextUtils.html#isEmpty(java.lang.CharSequence)

此外,您可以使用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();

答案 3 :(得分: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 ) ? " " : "") : "";
}

答案 4 :(得分:1)

map.put(checkString(street)+checkString(city)+checkString(zip)+checkString(country));

public String checkString(String str)
{
return str.trim().length()>0?str:"";
}