我可以使用equals()方法与多个字符串进行比较吗?

时间:2014-07-14 14:35:45

标签: java string

是否可以使用.equals获取多个字符串?

if(something.equals("String1 String2 String3")){
   System.out.println(Something);
}

我的意思是:

if(choose.equals("DO IT")){
   sysout blah blah blah
}
else if(choose.equals("DONT DO IT")){
   ...
}

8 个答案:

答案 0 :(得分:6)

不,但许多字符串的替代方法是将字符串放在集合中并执行以下操作:

Set<String> strings = new HashSet<>();
strings.add("A");
strings.add("B");
strings.add("C");

if (strings.contains("D")) {
  // ...
}

这可能更简洁一些。它也是无效的wrt。你想要比较的字符串,这通常非常有用。

进一步注意Java 7 the switch statement works with strings,如果您希望将不同的操作绑定到不同的字符串,那么这很有用。

答案 1 :(得分:5)

如果某事是"String1 String2 String3"那么它是平等的。

如果您的意思是包含,则可以

List<String> valid = Arrays.asList(string1, string2, string3);

if (valid.contains(something))

答案 2 :(得分:4)

不,你不能。 equals()一次只能使用一个对象。

作为替代方案,您可以尝试类似

的内容
if(something.equals("String1") || something.equals("String2") ||       
                                                 something.equals("String3")) {
   System.out.println(Something);
}

答案 3 :(得分:3)

如果你的意思是&#34;我可以在一次操作中测试一个字符串等于几个字符串&#34;,请使用正则表达式:

if (something.matches("String1|String2|String3")) {
    System.out.println(Something);
} 

管道字符|表示&#34; OR&#34;在正则表达式。

请注意,在java中(与许多其他语言不同)matches()必须匹配整个字符串 - 即这是&#34;等于&#34;比较,而不是&#34;包含&#34;比较。

答案 4 :(得分:1)

您可以使用正则表达式,因为您匹配的字符串不包含特殊的正则表达式字符,或者可以转义。

示例

Pattern p = Pattern.compile("^(String1|String2|String3)$");
if(p.matcher(something).find()) {
    //do something
}

或者您可以将字符串存储在一个集/列表中并查询集:

示例:

HashSet<String> possible = new HashSet<String>();
possible.add("String1");
possible.add("String2");
possible.add("String3");
if(possible.contains(Something)) {
    //do something
}

答案 5 :(得分:0)

不,但您可以使用||测试多个字符串是否相等:

if(something.equals("String1") || something.equals("String2") || something.equals("String3"))){
   System.out.println(Something);
}

答案 6 :(得分:0)

如果您已完成javadocs说明

public boolean equals(Object obj);

表示某个其他对象是否“等于”此对象。

它没有说某些其他对象“等于”这些对象。

使用equals(),您可以将Object与其他Object进行比较。它不允许您立即将Object与许多其他对象进行比较。但是,如果您想将Object与其他许多Objects进行比较,则每次比较都需要equals()

答案 7 :(得分:0)

好吧,如果你想检查一下这样的字符串是否匹配(也就是所有必须匹配,虽然这对我来说似乎没有意义),那么

String initString = "String1 String2 String3";
String[] splitStrings = initString.split(" ");
boolean match = true;
for(String string : splitStrings)
{
    if(!string.equals(something))
    {
        match = false;
        break;
    }
}
if(match == true)
{
    //did match all of them
}
else
{
    //there was one that was not matched
}

如果你想要“匹配至少一个”那么它只是

String initString = "String1 String2 String3";
String[] splitStrings = initString.split(" ");
boolean match = false;
for(String string : splitStrings)
{
    if(string.equals(something))
    {
        match = true;
        break;
    }
}
if(match == true)
{
    //did match at least one of them
}
else
{
    //didn't match any of them
}

但说实话,Java 8使这更简单:

String something = "whatever";
String initString = "String1 String2 String3";
String[] splitStrings = initString.split(" ");
boolean matchAll = Arrays.stream(splitStrings).allMatch((x) -> x.equals(something));
boolean matchAny = Arrays.stream(splitStrings).anyMatch((x) -> x.equals(something));