Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    177

    [Java]Ricerca di una stringa all'interno di una stringa più grande

    Salve, devo sviluppare un metodo che ricerca una determinata frase all'interno di un testo molto più grande. Per esempi cerco la frase "andiamo a cenare" dentro una pagina di un libro. Ho sviluppato un metodo ma non è ottimale, potete consigliami come migliorarlo? o una metodo migliore?
    codice:
    public boolean cercaFrase(String testo,String frase){ 
      StringTokenizer parolaTesto=new StringTokenizer(testo);
      StringTokenizer parolaFrase=new StringTokenizer(frase);
      boolean stato=false;
      while(!stato||parolaTesto.hasMoreTokens()){
        if(parolaTesto==parolaFrase){
         parolaTesto.nextToken();
         parolaFrase.nextToken();
         if(!parolaFrase.hasMoreTokens())
          stato=true;
        }
        parolaTesto.nextToken();
        parolaFrase=new StringTokenizer(frase);
      } 
      return stato;
    }
    se io lo testo con il main:
    codice:
    String testo="Come è andata la serata la pizza era la serata era buona";
    System.out.println(testo); 
    String frase="la serata era"; 
    System.out.println(frase); 
    boolean t=cnt.cercaFrase(testo, frase); 
    System.out.println(t);
    mi stampa l'errore:
    codice:
    Come è andata la serata la pizza era la serata era buona 
    la serata era 
    Exception in thread "main" java.util.NoSuchElementException at java.util.StringTokenizer.nextToken(Unknown Source) at sviluppo.CercaNelTesto.cercaFrase(CercaNelTesto.java:22) at sviluppo.TestCercaNelTesto.main(TestCercaNelTesto.java:41)
    Teo

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Suggerirei di consultare la documentazione della classe String e del relativo metodo indexOf, il quale restituisce la posizione della prima occorrenza di una stringa all'interno di un altra (se questa viene trovata, altrimenti restituisce -1).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    177
    Originariamente inviato da LeleFT
    Suggerirei di consultare la documentazione della classe String e del relativo metodo indexOf
    Ciao.
    Ho risolto così:
    codice:
    //se è presente restituisce true, false altrimenti
    	public boolean presenteB(String frase,String testo){
    		if(testo.indexOf(frase)==-1)
    			return false;
    		return true;
    	}
    Ignoravo questo metodo di String
    Teo

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Vixer
    codice:
    		if(testo.indexOf(frase)==-1)
    			return false;
    		return true;
    E se vuoi compattare:
    return testo.indexOf(frase) != -1;
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.