Cambiare una stringa?

di Anonimizzato24121 il
5 risposte
Ciao ragazzi, sapreste indicarmi una soluzione ottimale a questo esercio:(
/*Si scriva un programma che legga una riga di testo e poi la visualizzi
sostituendo la prima occorrenza della parola "odio" con "amore". 
Se la parola si presenta più volte il programma deve sostituire solo la prima occorrenza.*/
)?

5 Risposte

  • Mario Rossi ha scritto:


    scriva un programma che legga una riga di testo e poi la visualizzi sostituendo la prima occorrenza della parola "odio" con "amore". Se la parola si presenta più volte il programma deve sostituire solo la prima occorrenza.
    Devi farlo "a mano" andando a ragionare sui singoli caratteri (come possibile esercitazione)? Detto in altro modo: non puoi o puoi usare metodi specifici di String?
    Perché String ha già diversi metodi di "replace".
  • andbin ha scritto:


    Mario Rossi ha scritto:


    scriva un programma che legga una riga di testo e poi la visualizzi sostituendo la prima occorrenza della parola "odio" con "amore". Se la parola si presenta più volte il programma deve sostituire solo la prima occorrenza.
    Devi farlo "a mano" andando a ragionare sui singoli caratteri (come possibile esercitazione)? Detto in altro modo: non puoi o puoi usare metodi specifici di String?
    Perché String ha già diversi metodi di "replace".
    L'esercizio sollecita all'uso di metodi specifici di String.
  • Mario Rossi ha scritto:


    L'esercizio sollecita all'uso di metodi specifici di String.
    Il metodo immediato: replaceFirst di String. Si aspetta una regular expression ma "odio" è già una forma basilare di regex.

    Altrimenti, tecnica "vecchia" (più "didattica"): indexOf per cercare l'indice della occorrenza, poi fai dei substring per prendere la parte prima e quella dopo. Quindi ricomponi mettendo la sostituzione in mezzo.
  • andbin ha scritto:


    Mario Rossi ha scritto:


    L'esercizio sollecita all'uso di metodi specifici di String.
    Il metodo immediato: replaceFirst di String. Si aspetta una regular expression ma "odio" è già una forma basilare di regex.

    Altrimenti, tecnica "vecchia" (più "didattica"): indexOf per cercare l'indice della occorrenza, poi fai dei substring per prendere la parte prima e quella dopo. Quindi ricomponi mettendo la sostituzione in mezzo.
    Ho risolto con il primo metodo:
    /*Si scriva un programma che legga una riga di testo e poi la visualizzi
    sostituendo la prima occorrenza della parola "odio" con "amore". 
    Se la parola si presenta più volte il programma deve sostituire solo la prima occorrenza.*/
    
    import java.util.Scanner;
    
    public class OdioAmore {
    
    	public static void main(String[] args) {
    
    		Scanner keyboard = new Scanner(System.in);
    
    		String stringa1;
    		
    		System.out.print("Inserisci una frase che contenga la parola \"odio\": ");
            stringa1 = keyboard.nextLine();
            
            System.out.print(("\nFrase originale: ") + stringa1 + (".\n"));
    		
            stringa1 = stringa1.replaceFirst("odio","amore");
            System.out.print("Frase modificata: " + stringa1 +  ("."));
    
    	}
    
    }
    


    Non ho capito come usare il secondo metodo però...
  • Mario Rossi ha scritto:


    Non ho capito come usare il secondo metodo però...
    Se hai "blabla odio bleble", un indexOf per cercare "odio" ti dà l'indice di inizio della parola trovata:
    blabla odio bleble
           ?
           7
    A quel punto fai 2 substring, il primo per prendere la parte prima di "odio", poi il secondo per prendere la parte dopo odio. Quindi ricomponi la stringa mettendo in mezzo la sostituzione. Vedi attentamente la documentazione del substring(int beginIndex, int endIndex) (ti serve per la prima parte) e del substring(int beginIndex) (per la seconda parte).
Devi accedere o registrarti per scrivere nel forum
5 risposte