if(string.equalsIgnoreCase("first") ||
string.equalsIgnoreCase("second") || string.equalsIgnoreCase("third"))
我需要在||
这里使用 10(我有 10 个字符串要检查)。有没有简单的解决方案。
我需要找到满足哪个条件。
提前致谢..
if(string.equalsIgnoreCase("first") ||
string.equalsIgnoreCase("second") || string.equalsIgnoreCase("third"))
我需要在||
这里使用 10(我有 10 个字符串要检查)。有没有简单的解决方案。
我需要找到满足哪个条件。
提前致谢..
您可以使用string.matches()
which 接受一个正则表达式,您可以将其强制转换为第一个、第二个、第三个等:
if (string.matches("first|second|third"))
或者,为了不区分大小写:
if (string.matches("(?i)first|second|third"))
正则表达式很复杂,但可能是性能问题。
如果您需要知道哪个匹配项为真,请使用开关(仅限 Java 7):
switch (string.toLowerCase())
{
case "first": doSomething();
break;
case "second": ...;
break;
default: ...;
}
您可能想要使用 aSet<String>
并检查它是否包含所需的String
.
TreeSet<String> values = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
values.put("first");
values.put("second");
values.put("third");
if (values.contains(string.toLower())) {
}
这适用于对数时间(O(log n)
),而||
- 方法(理论上在最坏的情况下)是线性的。不过,对于 10 个元素来说,这几乎无关紧要。
编辑(学分去沃尔特):
该类TreeSet
使用Comparator
only 来确定相等性,而不是使用equals
方法。因此,您可以将混合大小写的字符串放入其中。从类 TreeSet 文档中:
请注意,如果要正确实现 Set 接口,集合维护的顺序(无论是否提供显式比较器)必须与 equals 一致。(参见 Comparable 或 Comparator 以了解与 equals 一致的精确定义。)这是因为 Set 接口是根据 equals 操作定义的,但 TreeSet 实例使用其 compareTo(或 compare)方法执行所有元素比较,所以两个从集合的角度来看,这种方法认为相等的元素是相等的。一个集合的行为是明确定义的,即使它的顺序与equals不一致;它只是不遵守 Set 接口的一般约定。
您可以使用自己的功能:
equalsIgnoreCase("string", "first", "second");
public boolean equalsIgnoreCase(String needle, String... haystack) {
foreach(String s : haystack) {
if(needle.equalsIgnoreCase(s)) {
return true;
}
}
return false;
}
这是 Java 8 和流解决方案
String string = "...";
List<String> match = Arrays.asList("first", "second", "third", "...");
if (match.stream().anyMatch(string::equalsIgnoreCase)) {
// ...
}