Ciao,sto provando a sostituire ad una stringa del tipo:
(A(BC)(RS))
ogni parentesi con una chiave(stringa)diversa,finchè uso il metodo replace su una stringa in input che ha parentesi con lettere diverse, tutto va beneSe però l'input è questo
(A(A)(A)(A)) mi vengono sostituite tutte le parentesi con la stessa chiave come giusto che sia,ma questo non mi va bene,per rimediare a ciò ho pensato di sostituire replace con replaceFirst pensando di ottnere l'effetto desiderato ossia:
(A°1°(A)(A))
(A°1°°2°(A))
(A°1°°2°°3°)
°4°
ma ciò non accadechi mi sa dire come mai?se non è chiaro cerco di spiegarmi meglio
codice:Scanner in_Str=new Scanner(System.in); Pattern patternRiga = Pattern.compile("([(]([A-Z0-9°]+)[)])"); String Riga ="",Riga2=""; String blocco =""; String espr2=""; int kB=1; StringTokenizer St ; do{ System.out.println("****************************************IMMETTI RIGA******************************************************"); Riga=in_Str.nextLine(); while(Riga.contains("(")){ Matcher matcher = patternRiga.matcher(Riga); while( matcher.find() ){//finche ci sono parentesi elementari blocco=matcher.group(); String chiave= "°".concat(String.valueOf(kB)).concat("°"); //********* CALCOLO BLOCCO ********* //replace Riga2=Riga.replaceFirst(blocco,chiave); //<---ERROREEEE! Riga=Riga2; System.out.println(Riga); kB++; } } }while(true);

Se però l'input è questo
chi mi sa dire come mai?se non è chiaro cerco di spiegarmi meglio
Rispondi quotando