View Full Version : [Java] String.replace
HiroNakamura
13-03-2008, 10:40
Ma scusate non c'è un metodo che trova all'interno di una stringa una sottostringa e la sostituisce con un'altra?
cioè tipo :
String lin = "oggi sono stanco";
lin.replaceAll("stanco","forte");
Purtroppo però così non và perchè il metodo replaceAll vuole una regex come primo parametro.
ps. "stanco" non è fisso quindi non posso fare un'equivalente regex dal momento che cambia a seconda di una variabile...
in java le stringhe son immutabili , quindi quando tu fai
lin.replaceAll("stanco","forte");
non modifichi la stringa lin , ma ne crei un altra , a quale non puoi accedere xche senza reference ,
devi fare cosi
String lin = "oggi sono stanco";
lin = lin.replaceAll("stanco","forte");
e funziona con i regex e anche senza
String lin = "oggi sono stanco";
lin.replaceAll("stanco","forte");
Purtroppo però così non và perchè il metodo replaceAll vuole una regex come primo parametro.Vero. Ma se noti esiste un:
replace(CharSequence target, CharSequence replacement)
e String è-un CharSequence, quindi puoi passare 2 stringhe (che non hanno niente a che fare con le regex).
(solo da Java 5 c'è questo replace)
HiroNakamura
13-03-2008, 11:26
grazie ad entrambi,
ho usato la soluzione di vladix visto che comunque sto usando il jdk 1.4
ho usato la soluzione di vladixMa vladix ha usato ancora replaceAll, che usa le regex. :stordita:
visto che comunque sto usando il jdk 1.4Lo temevo .... :rolleyes:
Ma si può ancora fare (con un minimo di "sbattimento"), facendo un piccolo metodo che sfrutta StringBuffer e i suoi metodi indexOf e replace.
:confused: mah ora sono io che sono confuso ... volendo anche "stanco" e un pattern ( o regex ) ... e usando
lin.replaceAll("stanco","forte");
funziona cmq ... non capisco dove e il problema ( o la differenza )
funziona cmqIn quel caso specifico, certo che funziona.
... non capisco dove e il problema ( o la differenza )HiroNakamura ha scritto: "stanco" non è fisso quindi non posso fare un'equivalente regex dal momento che cambia a seconda di una variabile...
Se non si conosce a priori la stringa da cercare (e si presuppone che non sia una regex), non si può usare replaceAll così su 2 piedi.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.