0

是否可以有多个参数 a .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.");
            }

如何使用多个参数来做到这一点?我自己也尝试了一堆||s ,但这似乎也不起作用。

4

3 回答 3

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。

我相信s.contains("")应该总是返回 true,所以你可以删除它。

于 2013-08-05T22:48:29.950 回答
1

看来你描述的可以用正则表达式来完成。

在正则表达式中,运算符|标记您需要匹配的几个选项之一。

例如,正则表达式(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).*"));

正则表达式是我推荐学习的强大工具。看看这个教程,你可能会发现它很有帮助。

于 2013-08-05T22:48:33.723 回答
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;
}
于 2013-08-05T22:57:35.933 回答