2013-02-20 15 views
7

Jsoup kullanarak bir web sitesinden HTML ayrıştırmak için bir Web sitesi üzerinden almak için gereken bir ArrayList doldurmak. Yani şimdi dizeleri ile dolu bir ArrayList var. Belirli bir dizeyi içeren listede bulunan dizini bulmak istiyorum. Örneğin, bir yerde, bir dizinde, bir dizede (literal) "Claude" olduğunu biliyorum ama contains "Claude" indeksini bulan herhangi bir kod yapamıyorum. burada ne denedim ama (bulunamadı) -1 döndürür: Sen String.indexOf ve List.indexOf karıştırıyorsunDizgiyi bir dizgi içeren bir ArrayList içinde bulun

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); 
     } 
    } 
} 
+3

mı 'Claude' büyük bir dizge veya üzerinde kendi listesindeki bir dize bir parçası? –

+0

“a” dizesini yazdırmaya çalışın ve “Claude” ı kontrol edin. Orada olmamalı. JSoup – LGAP

+0

kullanarak html etiketlerini nasıl yinelediğiniz üzerinde çalışıyorum, "Claude" listeye eklendiğinde -1 almanın herhangi bir nedenini göremiyorum. Ekleme yaparken fazladan boşluk aramak, takmadan önce süslemeyi kullanabilir. Dava konusu, "Claude", "claude" den farklıdır. – sudmong

cevap

25

. Yani

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 

: Aşağıdaki liste düşünüldüğünde

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); 
    } 
} 
0
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. 
    } 
} 
İlgili konular