2011年6月2日木曜日

Android null もしくは 0 length を判定する

文字列が null か 0-length の場合と、それ以外の場合で処理を分けたい場合
null 判定と String.length の判定を使って


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Log.d("[checkLength] null", isNullOrZeroLength(null) + "");
Log.d("[checkLength] length 0", isNullOrZeroLength("") + "");
Log.d("[checkLength] length 5", isNullOrZeroLength("Hello") + "");
}

public boolean isNullOrZeroLength(String s) {
if(s == null) {
return true;
}
else if(s.length() == 0){
return true;
}
else {
return false;
}
}


とやればできますが、android.text.TextUtils.isEmpty(CharSequence str) を使えば null と 0-length 両方を判定してくれます。
このメソッドは引数の str が null もしくは 0-length の場合に true を返します。
このメソッドを使って書き換えると


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Log.d("[TextUtils] null", isNullOrZeroLength(null) + "");
Log.d("[TextUtils] length 0", isNullOrZeroLength("") + "");
Log.d("[TextUtils] length 5", isNullOrZeroLength("Hello") + "");
}

public boolean isNullOrZeroLength(String s) {
return TextUtils.isEmpty(s);
}


それぞれの出力

D/[checkLength] null(22715): true
D/[checkLength] length 0(22715): true
D/[checkLength] length 5(22715): false
D/[TextUtils] null(22715): true
D/[TextUtils] length 0(22715): true
D/[TextUtils] length 5(22715): false



  

2 件のコメント:

  1. String.isEmptyはjava6だから諦めてましたが、TextUtilsにあるのは知らなかったです。ありがとうございます^^

    返信削除
  2. API Level 9 から String.isEmpty() も追加されてます。
    http://developer.android.com/reference/java/lang/String.html#isEmpty()

    null も判定してくれるのかどうかまではチェックしてません ><

    返信削除