Funzione "replace"

di il
1 risposte

Funzione "replace"

Salve a tutti, premesso che non sono un informatico né un esperto ma solo uno che si diletta a programmare una volta ogni tanto, avrei un problema da porvi...

Ho scritto due righe di codice per un programma che riceve in ingresso un testo e restituisce in output il testo modificato in modo opportuno.

vi scrivo direttamente il codice per farvi capire immediatamente
	
public static void main(String [] args){
		
		String[]lettere={"a","b","c","d","e","f","g","h"};
		
		String frase="abcdefg gfedcba";
		System.out.println(frase);

	for (int i=0; i<lettere.length-1; i++) {
		frase=frase.replace(lettere[i],lettere[i+1]);
		
	}

	System.out.println(frase);
	}

in pratica io vorrei che al posto di ogni "a" compaia una "b" e al posto di ogni "b" compaia una "c" e così via.
tralasciate il fatto che ho usato un array di stringhe al cui interno di ogni stringa vi è solo un carattere.
Nel programma che vorrei scrivere si tratterà di vere è proprie stringhe di lunghezza varia


Ovviamente così come ho strutturato il programma vi è un evidente errore, perchè in output riceverò solo "hhhhhhh hhhhhhh"

Questo è logico perchè quando si entra nel ciclo di for la frase subirà le seguenti trasformazioni

abcdefg gfedcba

bbcdefg gfedcbb


ora il programma, trovando nella frase delle "b" in più le trasforma e diventa

cccdefg gfedccc

e così via...

Come posso fare per risolvere questo inghippo???

Personalmente ho pensato che il problema è quel ciclo di for, l'ideale sarebbe se il programma trasformasse tutte le stringhe contemporaneamente!
E difatti ho letto da qualche parte spulciando su internet che è possibile passare nella funzione "replace" non solo una stringa da cambiare più quella che la sostituisce ma un intero array contenente le stringhe da cambiare più l'array contenente le stringhe che sostituiscono le precedenti

solo che non capisco come si applica!

qualcuno può aiutarmi?

vi prego non scrivete niente di troppo tecnico o termini strettamente settoriali!xD
ho solo una conoscenza di base della programmazione java

VI ringrazio in anticipo e attendo risposte

1 Risposte

  • Re: Funzione "replace"

    fhabbio ha scritto:


    Come posso fare per risolvere questo inghippo???
    La soluzione più semplice (ma sicuramente non la più "performante") è fare una normale scansione carattere per carattere della frase e per ciascun carattere andare a cercarlo nell'array delle lettere. Se trovi il carattere, lo sostituisci con quello all'indice +1.

    Ovviamente, mi pare chiaro, visto che String è immutabile, sarebbe logico lavorare o su un char[] o su un StringBuffer/StringBuilder, che sono "mutabili".

    fhabbio ha scritto:


    E difatti ho letto da qualche parte spulciando su internet che è possibile passare nella funzione "replace" non solo una stringa da cambiare più quella che la sostituisce ma un intero array contenente le stringhe da cambiare più l'array contenente le stringhe che sostituiscono le precedenti
    Onestamente non ho capito cosa hai letto/trovato ..... nessuno dei "replaceXyz" di String funziona così!

    Il replace(char oldChar, char newChar) sostituisce 1 carattere con un altro.
    Il replace(CharSequence target, CharSequence replacement) sostituisce una stringa con un'altra stringa.
    I replaceFirst/replaceAll usano le "espressioni regolari", ed è vero che potresti fare una regex per "matchare" tutte le tue lettere ma nel tuo caso il concetto della sostituzione è molto più "particolare" e non lo puoi fare con la sola stringa di replacement.
Devi accedere o registrarti per scrivere nel forum
1 risposte