!somearray.contains的多个参数

时间:2013-08-05 22:40:11

标签: java contains

是否可以为.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.");
            }

如何使用多个参数执行此操作?我自己也尝试了一堆||,但这似乎也不起作用。

3 个答案:

答案 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;
}