是否可以为.contains
设置多个参数?我正在搜索array
以确保每个string
包含多个字符中的一个。我在网上搜索过,但没有发现任何有用的东西。
for(String s : fileContents) {
if(!s.contains(syntax1) && !s.contains(syntax2)) {
found.add(s);
}
}
for (String s : found) {
System.out.println(s); // print array to cmd
JOptionPane.showMessageDialog(null, "Note: Syntax errors found.");
}
如何使用多个参数执行此操作?我自己也尝试了一堆||
,但这似乎也不起作用。
答案 0 :(得分:1)
不,它不能有多个参数,但||
应该有效。
!s.contains(syntax1+"") || !s.contains(syntax2+"")
表示s
不包含syntax1
,或者不包含syntax2
。
这只是猜测,但您可能希望s
包含以下两者之一:
s.contains(syntax1+"") || s.contains(syntax2+"")
或者s
可能包含:
s.contains(syntax1+"") && s.contains(syntax2+"")
或者s
可能不包含两者:
!s.contains(syntax1+"") && !s.contains(syntax2+"")
如果syntax1和syntax2已经是字符串,则不需要+""
。
我相信s.contains("")
应该始终返回true,因此您可以删除它。
答案 1 :(得分:1)
您所描述的内容似乎可以通过 regular expression 来完成。
在正则表达式中,运算符|
标记您需要匹配多个选项中的一个。
例如,正则表达式(a|b)
表示a或b。
正则表达式".*(a|b).*"
表示包含a或b的字符串,然后是其他 - 一切都正常(它假定一个行字符串,但如果需要,也可以轻松处理)。
代码示例:
String s = "abc";
System.out.println(s.matches(".*(a|d).*"));
s = "abcd";
System.out.println(s.matches(".*(a|d).*"));
s = "fgh";
System.out.println(s.matches(".*(a|d).*"));
Regular Exprsssions是我推荐学习的强大工具。看看this tutorial,您可能会发现它很有帮助。
答案 2 :(得分:0)
没有多重包含的东西。
如果您需要验证字符串列表是否包含在其他字符串中,则必须遍历它们并检查。
public static boolean containsAll(String input, String... items) {
if(input == null) throw new IllegalArgumentException("Input must not be null"); // We validate the input
if(input.length() == 0) {
return items.length == 0; // if empty contains nothing then true, else false
}
boolean result = true;
for(String item : items) {
result = result && input.contains(item);
}
return result;
}