是否可以使用.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")){
...
}
答案 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));