Cambiare una stringa?

di il
5 risposte

Cambiare una stringa?

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

  • Re: Cambiare una stringa?

    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".
  • Re: Cambiare una stringa?

    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.
  • Re: Cambiare una stringa?

    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.
  • Re: Cambiare una stringa?

    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ò...
  • Re: Cambiare una stringa?

    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