Hola. Estoy con la plataforma J2SE 1.3.1 que no tiene el metodo replaceAll, y no puedo encontrar en ningun lado otra manera de hacerlo.
Alguien tiene armado algo que simule este metodo?
Lo necesito con urgencia.
Gracias.
| | ||||
| ||||
| Ya lo encontre. Lo dejo para que lo usen.
Código:
protected String replaceAll(String object, String target, String replacement, int curIndex) {
int indexOfMatch = object.indexOf(target, curIndex);
if (indexOfMatch < curIndex) {
return object;
}
String prefix = "";
if (indexOfMatch > 0) {
prefix = object.substring(0, indexOfMatch);
}
String tail = object.substring(indexOfMatch + target.length());
String newObject = prefix + replacement + tail;
return replaceAll(newObject, target, replacement, indexOfMatch + replacement.length());
}
__________________ "Vivir....solo cuesta Vida" |
| | |||
| |||
| El metodo puede que funcione, pero es bastante deficiente en cuanto al uso de Strings. Aparte de que hace una comprobacion "if (indexOfMatch > 0)" y si no lo encuentra el resultado es "-1", así que si da un "0" lo ha encontrado al principio de la palabra.... no se, no suena muy fiable. |
| | ||||
| ||||
| Asi es como implementa el metodo realmente la plataforma. Igualmente no se cual es el problema del -1, ya que para encontrar una palabra utiliza el indexof y tiene que devolver 0 por si encuentra en la primera posicion.
__________________ "Vivir....solo cuesta Vida" |
| | |||
| |||
| Personalmente me gusta más usar StringBuffer, tal que así:
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.delete(badSignIndex + baseIndex, badSignIndex + baseIndex
+ replaced.length());
theSB.insert(badSignIndex + baseIndex, replacement);
baseIndex = baseIndex + replacement.length() - replaced.length();
badSignIndex = badSignIndex + replaced.length();
}
return theSB.toString();
}
|
| | |||
| |||
| Ese no puede ser el codigo del JDK, puesto que el metodo del JDK recibe como parametro una expresión regular y ese metodo no usa para nada expresiones regulares. Además de que si así fuera eso habría que fusilar al programador de Sun que introdujo semejante engendro en el JDK oficial |