我的问题是,如何判断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();
}
}
}
答案 0 :(得分:2)
contains方法只接受一个参数;必须有一个 CharSequence 。
您尝试传递数组字符串。
因此,一个简单的解决方案是将其更改为:
boolean anyMatch = false;
for (String match : matches) {
if (html.contains(match)) {
anyMatch = true;
稍后检查anyMatch
。
记录:这是非常基本的。编译器告诉你完全你的代码有什么问题。当您收到编译器消息时......然后读取它。阅读javadoc以获取您正在调用的库方法。在网上搜索错误消息的部分内容。这就是你解决这些问题的方法!
答案 1 :(得分:1)
来自Java API
布尔 包含(CharSequence s)
当且仅当此字符串包含指定的char值序列时,才返回true。
您不能将一个String数组赋予contains方法,而是一个String。 我建议你做一个for循环来解决你的问题:
boolean match = false;
for (String s : matches){
if (html.contains(s)){
match = true;
break;
}
}
答案 2 :(得分:1)
if(html.contains(Bad[0]) || html.contains(Bad[1]) || html.contains(Bad[2])){