Avatar billede sphere Nybegynder
10. november 2003 - 14:04 Der er 9 kommentarer

søge på den af ord i String

jeg har en søgefunktion der søger på ord i en string i et objekt... problemet er bare at hvis der står abekat så finder den ikke noget ved søgningen abe, hvordan gøres dette nemmest muligt? Desuden, så hvis der også er et objekt der har en string der hedder gabe så skal den udskrive ALLE objekter der opfyldte kriterierne med abe altså både gabe og abekat...   
   
   
    public void SøgeFunktion()
    {
        System.out.print("Indast det du søger efter: ");
        String søg = Keyboard.readString();
        boolean ikkefundet = true;
        for(int i=0; i<ArrayListen.size(); i++)
        {
            KonstruktorKlasse midlertidig = (KonstruktorKlasse)ArrayListen.get(i);
            StringTokenizer tz = new StringTokenizer(midlertidig.getTextString());
            while(tz.hasMoreTokens() && ikkefundet)
            {
                String found = tz.nextToken();
                if(søg.equalsIgnoreCase(found))
                {
                    System.out.println(midlertidig);
                    ikkefundet = false;
                }
            }
        }
        if (ikkefundet)
        {
        System.out.println("der var ingenting der opfyldte dit søgekriterie");
        }
Avatar billede arne_v Ekspert
10. november 2003 - 14:07 #1
Erstat:

if(søg.equalsIgnoreCase(found))
               

med:

if(søg.toUpperCaser().indexOf(found.toUpperCase()) >= 0)
Avatar billede arne_v Ekspert
10. november 2003 - 14:07 #2
Hov der er et "r" for meget.

if(søg.toUpperCase().indexOf(found.toUpperCase()) >= 0)
Avatar billede sphere Nybegynder
10. november 2003 - 14:27 #3
hmm den finder stadigvæk kune hele ordet, ikke abekat hvis jeg søger på abe...

og den skriver kun 1 resultat ud selvom der er flere der matcher...
Avatar billede di8leva Nybegynder
10. november 2003 - 14:34 #4
hvis du vill ha alle ord skall du ændre:
while(tz.hasMoreTokens() && ikkefundet)
--->
while(tz.hasMoreTokens())
Avatar billede di8leva Nybegynder
10. november 2003 - 14:35 #5
annars sluter den søge efter det førsta ordet...

sen vad gæller at finne "abekat" hvis du kun skriver "abe" skal det virke som arne_v skriver
Avatar billede s.nielsen Nybegynder
10. november 2003 - 14:36 #6
hvorfor bruger du StringTokenizer? Der er vel ingen grund til at dele strengen op i flere?

..
String søg = Keyboard.readString();
Konstruktorklasse midlertidig = null;
String temp = null;
boolean fundet = false;
for (int i = 0; i < ArrayListen.size(); i++)
  midlertidig = (KonstruktorKlasse)ArrayListen.get(i);
  temp = midlertidig.getTextString();
  if (temp.toUpperCase().indexOf(søg.toUpperCase()) >= 0) {
    System.out.println(midlertidig);
    fundet = true;
  }
}

if (!fundet) {
  System.out.println("Der var ingenting der opfyldte dit søgekriterie");
}

Søren.
Avatar billede sphere Nybegynder
10. november 2003 - 14:42 #7
fint nu skriver den alle der opfylder kriterierne, men den kan stadig ikke søge på en del af et ord i en string... altså hvis stringen er Hans Hansens Abekat burde man kunne søge på abe og så udskrev den hele stringen, altså: "Hans Hansens Abekat"...
Avatar billede sphere Nybegynder
10. november 2003 - 14:52 #8
s.nielsen det virker med din version kombineret med di8leva og arne_v's svar! mange tak! hvis i andre lige poster et svar skal jeg acceptere jeres svar...
Avatar billede arne_v Ekspert
30. november 2003 - 23:28 #9
??
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