2011-12-15 30 views
2

申し訳ありませんが、愚かな質問です。私は3つの単語が1つの空白で区切られた名前と比較する必要があります。名前がヌルか「これはAndroidです」の場合、私は何かをするでしょう。たとえば、次のコードはこの比較を行う権利ですか?空白文字列との比較

if((name==null)||(name.equalsIgnoreCase("This is Android"))) 
    { 
     //start activity 1 
     } 
    else 
     { 
     //start activity 2 
     } 
+0

「名前」の詳細を少し入れてください –

+0

「3つの単語を1つの空白で区切って」どうしますか? –

+0

sorry nameはすでに文字列です。私は自分の質問を編集しました。ありがとう –

答えて

3

そうする前にnameがヌルかどうかを確認してください。 (を除いて、それはifの代わりIfでなければなりません):

//either 
if(name != null) { 
    if(name.equalsIgnoreCase("This is Android") { 

    } 
} 

//or 
if("This is Android ".equalsIgnoreCase(name)) { 

更新:

あなたは文字列を比較している、空白がカウントされます。だから、基本的に "Hello world"と "Hello world"は等しくない。

周囲の空白を無視するには、.trim()メソッドを使用する必要があります。

name = name.trim(); //since strings are immutable you need to assign return value to name 
if("This is Android".equalsIgnoreCase(name)) { 
+0

なぜ文字列リテラルでtoStringに行くのですか?また、なぜ順序を逆転させるのですか? – Miquel

+0

@ミケル:ありがとうございます。 OPからのコピー中は注意を払わなかった。ヌルチェックが必要でない場合は、逆転する場合。 –

+0

@gurung - 必要がない限り、nullをチェックする必要はありません。これは、equalsIgnoreCase呼び出しによってカバーされます。 –

6

"これはアンドロイドである" "これはAndroidのです" とequalsIgnoreCaseはfalseを返しますと異なっています。 trim()を使用して、空白と、Stringの開始または終了を削除できます。

希望すると便利です。

+0

実際には "これはAndroidです"というコードです。私の言いたいことは...私の質問をもう一度編集しました。 –

+0

答えは「はい」です。比較はOKです。 –

1

必ず等号で左側に文字列定数を保つ、これはNPEを保証しません:あなたはスペースをたくない場合は

if ("This is Android ".equalsIgnoreCase(str1)) { 
    // start activity 1 
} else { 
    // start activity 2 
} 

その後、trim()を追加します:

if ("This is Android ".trim().equalsIgnoreCase(str1)) { 
    // start activity 1 
} else { 
    // start activity 2 
} 
+1

文字列リテラルのトリミングのポイントは何ですか? – viktor

1
このような

if("This is Android".equalsIgnoreCase(name)) 
    // start activity 1 
} else { 
    // start activity 2 
} 

または(ユーザーがペーストした値の末尾に不要なスペースがある場合文字列)

if(name != null && "This is Android".equalsIgnoreCase(name.trim())) 
    // start activity 1 
} else { 
    // start activity 2 
}