Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    30

    Ricerca stringa dentro a una stringa

    Salve,
    sto scrivendo un programma (a scopo didattico) in cui mi serve cercare una stringa all'interno di stringhe in un ArrayList. Mi spiego meglio: devo gestire un elenco di stringhe, e offrire la possibilità di cercare fra di esse una stringa particolare. Per complicarmi la vita, vorrei stampare tutte le stringhe dell'array che contengono la stringa anche in mezzo ad altri caratteri. Ad esempio, se nell'elenco ho le parole, "apostrofo" e "casa", e l'utente cerca "pos", gli stampo "apostrofo" come risultato della sua ricerca.
    Questo è il metodo che ho pensato (le stampe a video delle sottostringhe sono solo per vedere dove sbaglio ed il boolean serve per un'altra parte del programma):
    codice:
    public boolean find(String name){
    		System.out.println("dentro a find");
    		boolean ok=false;
    		for(int i=0; i<names.size(); i++)
    			for(int j=0; j<(names.get(i).length()-name.length()); j++){
    				System.out.println("Sottostringa da "+j+" per "+name.length()+" caratteri.");
    				System.out.println(names.get(i).substring(j, name.length()));
    				if(names.get(i).substring(j, name.length()).equals(name)){
    					System.out.println(names.get(i));
    					ok=true;
    				}
    			}
    		return ok;
    	}
    E al run time, cercando ad esempio "afo" in "apostrofo" stampa le sottostringhe apo, po, o, per po
    i dare l'errore: java.lang.StringIndexOutOfBoundsException: String index out of range: -1

    Non ho idea di dove stia sbagliando...

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da MadWolf Visualizza il messaggio
    vorrei stampare tutte le stringhe dell'array che contengono la stringa anche in mezzo ad altri caratteri. Ad esempio, se nell'elenco ho le parole, "apostrofo" e "casa", e l'utente cerca "pos", gli stampo "apostrofo" come risultato della sua ricerca.
    Scusa ma a parte il for per iterare sulla lista, poi non ti basta il contains(CharSequence s) (se vuoi solo true/false) oppure indexOf(String str) (se vuoi l'indice della occorrenza) ??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    30
    In tutta sincerità non conoscevo il metodo contains (CharSequence s), mi hai illuminata! Grazie mille

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da MadWolf Visualizza il messaggio
    In tutta sincerità non conoscevo il metodo contains (CharSequence s)
    Consiglio: consulta sempre la documentazione javadoc del framework.
    qui online e qui scaricabile per uso offline.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    30
    Grazie

Tag per questa discussione

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.