Jsoupを使用して、WebサイトからHTMLを解析し、ArrayList
にWebサイトからフェッチする必要があるものを入力します。これで、文字列で満たされたArrayList
ができました。特定の文字列を含むインデックスをリストから見つけたいのですが。たとえば、リストのどこかにあるインデックスに文字列(リテラル) "Claude"があることは知っていますが、contains
"Claude"というインデックスを見つけるコードを作成することはできません。 ArrayList
...これは私が試したものですが、-1
(見つかりません)を返します:
ArrayList < String > list = new ArrayList < String > ();
String claude = "Claude";
Document doc = null;
try {
doc = Jsoup.connect("http://espn.go.com/nhl/team/stats/_/name/phi/philadelphia-flyers").get();
} catch (IOException e) {
e.printStackTrace();
}
for (Element table: doc.select("table.tablehead")) {
for (Element row: table.select("tr")) {
Elements tds = row.select("td");
if (tds.size() > 6) {
String a = tds.get(0).text() + tds.get(1).text() + tds.get(2).text() + tds.get(3).text() + tds.get(4).text() + tds.get(5).text() + tds.get(6).text();
list.add(a);
int claudesPos = list.indexOf(claude);
System.out.println(claudesPos);
}
}
}
混乱しているString.indexOf
およびList.indexOf
。次のリストを検討してください。
list[0] = "Alpha Bravo Charlie"
list[1] = "Delta Echo Foxtrot"
list[2] = "Golf Hotel India"
list.indexOf("Foxtrot") => -1
list.indexOf("Golf Hotel India") => 2
list.get(1).indexOf("Foxtrot") => 11
そう:
if (tds.size() > 6) {
// now the string a contains the text of all of the table cells joined together
String a = tds.get(0).text() + tds.get(1).text() + tds.get(2).text() +
tds.get(3).text() + tds.get(4).text() + tds.get(5).text() + tds.get(6).text();
// now the list contains the string
list.add(a);
// now you're looking in the list (which has all the table cells' items)
// for just the string "Claude", which doesn't exist
int claudesPos = list.indexOf(claude);
System.out.println(claudesPos);
// but this might give you the position of "Claude" within the string you built
System.out.println(a.indexOf(claude));
}
for (int i = 0; i < list.size(); i += 1) {
if (list.get(i).indexOf(claude) != -1) {
// list.get(i).contains(claude) works too
// and this will give you the index of the string containing Claude
// (but not the position within that string)
System.out.println(i);
}
}
First check whether it is an instance of String then get index
if (x instanceof String) {
...
}
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getX() == someValue) { // Or use equals() if it actually returns an Object.
// Found at index i. Break or return if necessary.
}
}