63

Java for Androidでこのようなことを行うことは可能ですか(これは擬似コードです)

IF (some_string.equals("john" OR "mary" OR "peter" OR "etc."){
   THEN do something
}

現時点では、これはそれらの間で複数のString.equals()条件を介して行われ||ます。

4

7 に答える 7

166

可能性:

  • 使用String.equals()

    if (some_string.equals("john") ||
        some_string.equals("mary") ||
        some_string.equals("peter"))
    {
    }
    
  • 正規表現を使用します。

    if (some_string.matches("john|mary|peter"))
    {
    }
    
  • 照合する文字列のリストをコレクションに保存し、コレクションを検索します。

    Set<String> names = new HashSet<String>();
    names.add("john");
    names.add("mary");
    names.add("peter");
    
    if (names.contains(some_string))
    {
    }
    
于 2012-04-18T11:07:31.510 に答える
59
if (Arrays.asList("John", "Mary", "Peter").contains(name)) {
}
  • これは、準備されたセットを使用するほど高速ではありませんが、ORを使用するよりもパフォーマンスが低下することはありません。
  • nameがNULLの場合(Setと同じ)、これはクラッシュしません。
  • きれいに見えるので気に入っています
于 2014-01-08T21:10:11.690 に答える
8

許容可能な値をaに保持し、 containsメソッドHashSetを使用して文字列が存在するかどうかを確認します。

Set<String> accept = new HashSet<String>(Arrays.asList(new String[] {"john", "mary", "peter"}));
if (accept.contains(some_string)) {
    //...
}
于 2012-04-18T11:09:53.427 に答える
3

現在の実装は正しいです。提案は不可能ですが、擬似コードは複数のequal()呼び出しとで実装されます||

于 2012-04-18T11:07:42.177 に答える
1

Android KitKat以降用に開発する場合は、switchステートメントを使用することもできます(「switch(String)を使用したAndroidコーディング」を参照)。例えば

switch(yourString)
{
     case "john":
          //do something for john
     case "mary":
          //do something for mary
}
于 2012-04-18T11:13:16.790 に答える
0

いいえ、文字列が"john" OR "mary" OR "peter" OR "etc."

を使用して確認する必要があります||

好き。、、if(str.equals("john") || str.equals("mary") || str.equals("peter"))

于 2012-04-18T11:07:05.720 に答える
0
Pattern p = Pattern.compile("tom"); //the regular-expression pattern
Matcher m = p.matcher("(bob)(tom)(harry)"); //The data to find matches with

while (m.find()) {
    //do something???
}   

おそらく一致するものを見つけるために正規表現を使用しますか?

またはアレイを作成します

 String[] a = new String[]{
        "tom",
        "bob",
        "harry"
 };

 if(a.contains(stringtomatch)){
     //do something
 }
于 2012-04-18T11:11:52.900 に答える