18338


初心者なので基本的な質問かもしれませんが、よろしくお願いします。

textという文字に何か文字を入力しないといけないというif文を書いています。  
条件式を3つ定義して分岐したいと考えてます。

[code]

    if (TextUtils.isEmpty(text) || text.length() == 0 || text.trim().equals("")){
    //true処理                  
    } else {
    //else処理
    }
    
[/code]

上記のように書いているのですが、ブランクを入力した時にelse処理にいってしまいます。  
なぜなのでしょうか。


CC BY-SA 3.0
2015-11-02T17:52:09.737
18337
2015-11-02T18:21:57.953
13070
question
java android-studio
javaの複数の条件式が思い通りにいきません


[`TextUtils.isEmpty(CharSequence)`](http://developer.android.com/reference/android/text/TextUtils.html#isEmpty\(java.lang.CharSequence\))メソッドは`null`か空文字列でtrue,  
`text.length() == 0`は空文字列でtrue,  
[`String#trim()`](http://developer.android.com/reference/java/lang/String.html#trim\(\))が空文字列と等価になるのはコードポイントU+0020以下の文字で構成される文字列です。

入力した「ブランク」が、この条件に当てはまらなければ`else`に入るわけですが、`trim`されない条件の文字が入っていることが考えられます。  
例えば全角スペースが入っていると条件にマッチせず、`else`に入りますね。

[`Character.codePointAt(CharSequence,int)`](http://developer.android.com/reference/java/lang/Character.html#codePointAt\(java.lang.CharSequence,%20int\))メソッドでコードポイントを取得できますので、このメソッドで実際に何が入っているのか確認することができると思います。


CC BY-SA 3.0
2015-11-02T18:21:57.953
18338
2015-11-02T18:21:57.953
2808
18337
answer