Yo, antes de existiera el replaceAll hice esta version:
Código:
static String replace(String original, String replaced, String replacement)
{
StringBuffer theSB = new StringBuffer(original);
int baseIndex = 0;
int badSignIndex = 0;
while ((badSignIndex = original.indexOf(replaced, badSignIndex)) != -1)
{
theSB.deleteCharAt(badSignIndex + baseIndex);
theSB.insert(badSignIndex + baseIndex, replacement);
baseIndex = baseIndex + replacement.length() - 1;
badSignIndex = badSignIndex + 1;
}
return theSB.toString();
}
La ventaja que tiene es que como no usa expresiones regulares y usa StringBuffer en vez de String, es mucho más eficiente que el replaceAll. Eso si, si necesitas expresiones regulares entonces no vale y es más comodo usar lo que te dan las ultimas versiones del API.
Saludos