Avatar billede _luigi_ Nybegynder
30. december 2005 - 21:54 Der er 4 kommentarer og
3 løsninger

Simpelt program (equalsIgnoreCase()-metode)

Jeg har lavet et lille program, der tager en streng, og hvis ordet "grillmad" forekommer, sorterer det fra og udskriver strengen. Problemmet er bare hvis "grillmad" bliver stavet Grillmad, griLlmAD, etc., så kan prog. ikke genkende det. Man kunne selvfølgelig bruge toLowerCase() som nødløsning, hvilket er den mulighed jeg har kommenteret ud i nedenstående kode.
Men det ville dog være lækkert hvis jeg kunne få bragt equalsIgnoreCase() ind i billedet, men jeg kan ikke lige se hvorn det skal gøres. Nogen der kan give et bud?

import java.util.*;
public class Grillmad
{
    public static void main(String[] args)
    {
    String str;
    Scanner scan = new Scanner(System.in);
   
    System.out.println("Skriv en tekst:");
    str = scan.nextLine();
    //str = str.toLowerCase();

    while(str.indexOf("grillmad")==-1)
    {
    System.out.println("Ordet grillmad optræder ikke i teksten.");
    System.out.println("Skriv en ny tekst:");
    str = scan.nextLine();
    }
   
    while(str.indexOf("grillmad")!=-1)
    {
    str = str.substring(0,str.indexOf("grillmad")) + str.substring(str.indexOf("grillmad")+8);
    }
    System.out.println("Uden ordet grillmad ser teksten således ud: "+str);
    }
}
Avatar billede mwl Nybegynder
30. december 2005 - 22:27 #1
Du vender også tingene lidt på hovedet. Normalt er det vidst god skik at nøjes med en enkelt while løkke:

while (true) {
  String str = scan.nextLine();
  if (str.indexOf("Grillmad"))
    /* grillmad fundet */
  else
    /* intet grillmad fundet */
}

Husk at afbryde løkken på et tidspunkt med break;
Avatar billede arne_v Ekspert
30. december 2005 - 22:32 #2
til inspiration:

package december;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class SmartReplace {
    private final static Pattern p = Pattern.compile("grillmad", Pattern.CASE_INSENSITIVE);
    public static void test(String s) {
        Matcher m = p.matcher(s);
        if(m.find()) {
            System.out.println(s + " after replace: " + m.replaceAll(""));
        } else {
            System.out.println(s + " does not contain grillmad");
        }
    }
    public static void main(String[] args) {
        test("Denne her har grillmad!");
        test("Denne her har GRILLMAD!");
        test("Denne her har gRiLlMaD!");
        test("Denne her har ikke!");
    }
}
Avatar billede _carsten Nybegynder
30. december 2005 - 22:36 #3
Arne V's regulære udtryk er løsningen, synes bare du skal have denne med på vejen

public class RegionTest { 
    public RegionTest() {
    }

    public static void main(String[] args) {
        String s = "Denne GrIlLmAd er hundeæde";
        String t = "grillmad";
       
        for (int i = 0; i < s.length(); i++) {
            if(s.regionMatches(true,i,t,0,8))
                System.out.println("Det lugter af grill");
        }
    } 
}
Avatar billede _luigi_ Nybegynder
30. december 2005 - 23:36 #4
I skal alle have tak for hjælpen, jeg holder mig dog til den oprindelige kode med toLowerCase(), den har jeg nemlig tjek på! :)

Jeg er lige gået i gang med bogen objektorienteret programmering i java af Jacob Nordfalk, http://javabog.dk/, og er ikke nået så forfærdelig langt. De opgaver jeg har gang i nu skulle gerne kunne løses vha. String-klassens metoder, og så selvfølgelig diverse løkker, if-else-sætninger usw. Så som arne skriver, så må de, for mig, (endnu) knap så indlysende løsninger blive til inspiration. :)

I er alle tre velkommen til at smide et svar så fordeler jeg point ligeligt mellem dem der vil ha'! ;)
Avatar billede arne_v Ekspert
30. december 2005 - 23:48 #5
.
Avatar billede _carsten Nybegynder
30. december 2005 - 23:50 #6
Et svar mere
Avatar billede mwl Nybegynder
31. december 2005 - 01:04 #7
Du kan også tage et kig på http://www.docjava.dk/. Der er også en del gode beskrivelser af de fleste interessante emner.
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

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