Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java如何查看字符串是否包含多个单词?_Java_String - Fatal编程技术网

Java如何查看字符串是否包含多个单词?

Java如何查看字符串是否包含多个单词?,java,string,Java,String,我的问题是,如何判断html是否包含字符串中的任何内容,下面的代码不起作用。它抛出不兼容的类型:java.lang.String[] public void run() { Document doc; String[] matches = new String[]{"Unavailable", "Too Short", "skin-3d"}; try { BufferedWriter writer = new Buf

我的问题是,如何判断html是否包含字符串中的任何内容,下面的代码不起作用。它抛出不兼容的类型:java.lang.String[]

    public void run() {
        Document doc;
        String[] matches = new String[]{"Unavailable", "Too Short", "skin-3d"};
        try {
            BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt", true));
            //Thread.sleep(3000);
            doc = Jsoup.connect("https://t.com/s/" + line).userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0")
                    .referrer("http://www.google.com").ignoreHttpErrors(true).get();
            //Elements ID = doc.getElementsByClass("card-header");
            String html = doc.html();
            if (!html.contains(matches)) {
                System.out.println(line + " taken");
                System.out.println(line + " is available or is only two chars");
                writer.write(line + "\n");
                writer.close();

            } else {
                System.out.println(line + " taken");
                writer.close();
            }
        } catch (IOException e1) {
            e1.printStackTrace();
        }

    }
}

contains方法只接受一个参数;它必须是一个字符序列

您尝试传递字符串的数组

因此,一个简单的解决方案是将其改为:

boolean anyMatch = false;
for (String match : matches) {
  if (html.contains(match)) {
   anyMatch = true;
然后检查
anyMatch

记录在案:这是非常基本的。编译器准确地告诉您代码的问题是什么。当您收到编译器消息时。。。然后读它。请阅读javadoc以了解您正在调用的库方法。在网上搜索部分错误消息。这就是你解决这些问题的方法

来自JavaAPI的

布尔值包含(字符序列)

当且仅当此字符串包含指定的字符值序列时,返回true

不能为contains方法提供字符串数组,只能提供一个字符串。 我建议您执行for循环来解决您的问题:

boolean match = false;
for (String s : matches){ 
    if (html.contains(s)){
        match = true;
        break;
    }
}

这对我不起作用,我现在被拒绝连接,因为我连接了三次。当然,你必须做出适当的改变。严肃地说:如果这些简单的事情给你带来了很多问题:现在就考虑退一步,多学一些基础知识。如果您无法将我的示例代码放在源代码的正确位置,请不要玩弄http连接、文件读取器之类的东西。换句话说:这是您的代码,您必须确保只调用一次connect()和html()!你的答案和幽灵猫的答案一样,如果你没有新的答案,那么就不需要有重复的答案。你可以投票支持你认为对这个问题正确的答案。首先,我同时在写我的答案。其次,我认为对javaapi的引用非常重要。它向人们表明,研究可以提前提出问题,而这往往是找到答案的最佳方式。最后,我的解决方案似乎要快一点,因为一旦找到任何元素,它就会停止循环。如果只是为了停止循环,您重新回答了问题,那么最好编辑第一个答案或留下评论,不管怎样,您的答案中没有什么新内容,只是复制和粘贴。请再次阅读我的评论。谢谢。我已经读了你的评论,你是世界上Java领域最优秀、最专业的人。继续复制粘贴,祝你好运!为了明确起见,您想检查html是否包含数组中所有匹配的字符串,或者至少包含一个?是的,正确,但类似GhostCat的回答是,向网站发送垃圾邮件3次,这比我多了3次,这是正确的吗?全部匹配还是只有一个匹配?我基本上想做的是,如果html中有{“不可用”,或“太短”或“skin-3d”,那么..好的,这就是任何匹配