Avatar billede chalde Seniormester
30. oktober 2009 - 10:11 Der er 7 kommentarer og
1 løsning

Søge i arraylist

Hejsa

Jeg har en funktion der hiver indholdet af en side (html).
Meningen er, at jeg skal søge body igennem for et ord.

Ind til videre har jeg htmlindholdet liggende i en arraylist, men er lidt i tvivl om hvordan jeg får sorteret body fra og kun søge i den, eller fjerne alt andet end body.

Nogen der har en idé til hvordan det bedst kan gøres (primært hvordan jeg får bodyen til at stå alene, selve søgningen bør ikke skabe problemer herefter).

import java.net.*;
import java.util.ArrayList;
import java.util.Scanner;
import java.io.*;

public class UrlToArraylist {
   
    static String getUrl;
    static Scanner scan = new Scanner (System.in);
    static ArrayList<String> htmlContent = new ArrayList<String>();
   

    public static void main(String[] args) throws Exception {

        System.out.println ("Indtast url");
        getUrl = "http://" + scan.next();
       

        URL url = new URL(getUrl);
        BufferedReader in = new BufferedReader(
        new InputStreamReader(url.openStream()));
       

        String inLine;
        while ((inLine = in.readLine()) !=null){
            htmlContent.add(inLine);

        }
        System.out.println("Indhold af array: " + htmlContent );
        in.close();

    }
}
Avatar billede Slettet bruger
30. oktober 2009 - 11:37 #1
Nu ved jeg jo ikke hvad du skal bruge array'et til efter søgningen..
Men ville det ikke være enklere at holde det i én (kæmpe) String
Simpelthen skære hovede og hale af før/efter "<body"  og "</body"
- og derefter "søge" helt udramatisk: gotcha = torso.indexOf( ? )
Avatar billede chalde Seniormester
30. oktober 2009 - 11:53 #2
Det kunne være en idé :)
Har du et forslag til hvordan det implementeres istedet for min nuværende?
(er blevet godt og grundig rusten i java)
Avatar billede Slettet bruger
30. oktober 2009 - 13:13 #3
Ups. Selv rusten i java...:

-----
String krop = "";
while ((inLine = in.readLine()) !=null)
  krop += inLine;

int hoved = krop.indexOf("<body");
int hale = krop.lastIndexOf("</body");

if (hoved == -1 || hale == -1 || hale < hoved)
  KillKommaDelete();

String torso = krop.substring( hoved, hale );
-----
Avatar billede chalde Seniormester
30. oktober 2009 - 14:58 #4
Jeg får lige kigget på det hen over weekenden.
Tak for hjælpen ind til videre.

Post gerne yderligere hvis der skulle være tilføjelser.
Avatar billede arne_v Ekspert
31. oktober 2009 - 01:39 #5
Hvis filen er meget stor kunne man overveje StringBuilder fremfor String.
Avatar billede chalde Seniormester
03. november 2009 - 12:23 #6
Har brugt en kombination af begge jeres input og det spiller.
Smid et svar bgge to.

Og tusind tak for hjælpen.

Endelig kode skal lige støvsuges før den kommer op.
Avatar billede arne_v Ekspert
04. november 2009 - 01:21 #7
Jeg skal ikke have point. Det var bare en supplerende bemærkning.
Avatar billede chalde Seniormester
04. november 2009 - 07:54 #8
Ok.
Men i skal begge have tak for hjælpen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester